Tech I Enjoy Logo

Custom Search




  Home >> Miscellaneous

How to use different logging api with Apache Commons Logging?:

In an Enterprise application, where there are many different
components and modules are getting involved in a request
processing task, finding bug or defect is very difficult
so long as logging mechanism is not configured with the
application. During development phase, importance of logging may
not be realized, but in production and/or deployment
environment it comes out to be of great relief, when some task
as planned, not function properly.

There are many logging framework available, some of these are open source
and some of these are commercial, and some of these are free. But the decision
of using a proper logging framework can change in future, depending on various
facts, one of these I can think of could be type of logging mechanism. Suppose
a need for sending an email on some critical bug to administrator arises. If
this type of logging mechanism is supported by the logging framework used today,
then it is alright, but if not, then, one has to implement their own logging api
with the desired feature. But in this way, there will be changes in many files,
starting from UI to the data layer. Imagine the type of impact in terms of
changes will be.

Apache commons logging provides a solution to this problem of code change with logging mechanism or framework change. I am going to show how it is helping us by providing simple to use API, those can be configured externally without application code change (logging code). There are three JAR files, to be placed in CLASSPATH (it depends on type of application) in case of web application these could be placed in WEB-INF/lib folder. In case of EAR enterprise application, these could be placed in common project and entries in MANIFEST.MF file as "Class-path"(Open for Discussion). Let us take an existing sample code from another discussion from "Using Log4j" and changing it as shown below: CommonsLoggingUsage.java ------------------------------------------------------------------------------ /** * This code is provided "AS IS", user caution advised. * Copyright: guddumails@yahoo.com */ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class CommonsLoggingUsage { private static Log logger = LogFactory.getLog(CommonsLoggingUsage.class); public CommonsLoggingUsage() { analyse(); } public void analyse() { logger.trace("Entering method analyse"); try{ String str = null; System.out.println(str.toString()); }catch(Exception ex){ logger.error("In method analyse",ex); }finally{ logger.trace("Exiting method analyse"); } } public static void main(String args[]) { new CommonsLoggingUsage(); } } ------------------------------------------------------------------------------ Here in this sample, instead of implementing Log4j or JDK1.4 logging related code, we can see here one interface org.apache.commons.logging.Log and another Factory abstract class org.apache.commons.logging.LogFactory is used. This makes the above piece of code independent/not bound to any of the logging api/implementation, but is configurable by some properties files as shown below: One point I would like to say here is that, apache commons logging presently not able to work with multiple logging api together, this means commons logging uses only one logging api at a time, that can be configured in one of the many ways as follows: 1. By defining a log implementation in a commons-logging.properties file. 2. By defining system environment variable such as -Djava.util.logging.config.file=logging.properties, where logging.properties has configuration settings for JDK1.4 logging api, such as, -------------------------------- 1.1 handlers=java.util.logging.FileHandler 1.2 java.util.logging.FileHandler.pattern=testjdklog.log 1.3 java.util.logging.FileHandler.append=true -------------------------------- Line 1.1 defines type of Handler, ConsoleHandle - to output logged statement on console, or FileHandler - to send logged statement to a file. Line 1.2 defines the log file name in case of FileHandler. Line 1.3 defines whether to append logged statement or not, generally append is used as default setting. As preference is given to point number 1 first and if no log implementation found then point 2 is consider. So it is advisable to keep only one Log implementation to be used with commons logging at a time, that is either Log4j or JDK1.4 Logging. Steps used in this example are: 1. Sample code "CommonsLoggingUsage.java" This Java code shows a very basic implementation of commons logging. 2. A properties file "commons-logging.properties" This properties file is read by commons logging first, to read if any logging framework is configured. 3. If our application is to use Log4j, then a configuration setting is required as follows: log4j.configuration=log4j.properties 4. So Log4j should be included in ClassPath, to use it. Or else 5. If JDK1.4 logging to be used, then follow steps as mentioned above: Define a logging.properties file with following properties: ---------------------------------- handlers=java.util.logging.FileHandler java.util.logging.FileHandler.pattern=testjdklog.log java.util.logging.FileHandler.append=true ---------------------------------- 6. Place this logging.properties file as System environment variable as java -Djava.util.logging.config.file=logging.properties CommonsLoggingUsage This makes CommonsLoggingUsage to use java.util.logging implementation from JDK to be used as the log implementation for commons logging. All contents of this site are copyrighted by the Author, Contact Author Reproduction of any of these material from this site, in any form, is strictly prohibited. If you like to share your comment/suggestions/feedback relating to this Page, you can do so by droping us an email at usingframeworks @ gmail . com with the subject line mentioning URL for this Page (i.e, /using-apache-commons-log.php) or use this LINK. As per this website's privacy policy, we never disclose your email id, though we shall post your comments/suggestions/feedback with your name (optional) and date on this Page. If you don't want your comments/suggestions/feedback to be shared in this Page, please mention so in your email to us. Thank you very much..... If anything missed out , please let me know at techienjoy at yahoo . com
Android Example on Downloading AnyFormat :
Example on ways to download any file with
any format using Android Platform.
Web Load Test with example :
Example using Load test functionalities 
with code and explained
Android ImageView Example :
Example on using ImageView using 
Android Platform. A very simple to setup
and see it working.
Android Tab View Example :
Example on Android Tab View
explained with a very simple scenario
and appropriate screens captured and shown.
Android TimePickerDialog Example :
Example on Android TimePickerDialog
explained with a very simple scenario
and appropriate screens captured and shown.
JSF example with source code :
JSF example with source code on Java Platform.
DOJO Tree Widget Example :
Example on using DOJO Tree Widget
explained with a very simple scenario
DOJO Dialog Example :
Example on using DOJO Dialog
explained with a very simple scenario
Android DatePickerDialog Example :
Example on Android DatePickerDialog
explained with a very simple scenario
and appropriate screens captured and shown.
Wizard Framework using Java Platform :
Example using Custom Wizard Framework 
with code and explained
JSF example with source code :
JSF example of Tags and Data Table 
with source code on Java Platform.
Android Sensors Example :
Example on Android Sensors Listed and
explained with a very simple scenario 
and article with appropriate screens 
captured and shown.
Android Image Gradient Merge :
Example using Images and Gradient Shape using
Android Platform.
Example of using Mule ESB JMS Transport :
Example of using Mule ESB JMS Transport with simple
to explain source code.
Google GWT Example :
Example using GWT and some design patterns and various
ways of implementing this example.
JSF example with source code :
JSF example of Tags and checkboxes 
with source code on Java Platform.
Android Layout Example :
Android Example on using Layout
with source code Explained.
Android ListView Example :
Example on Android ListView 
explained with a very simple scenario
whereby showing folder and files with
structure and appropriate screens 
captured and shown.
JSF example on validation :
JSF Validation with example with source code 
on Java Platform.
Example of using Log4J Part 1 :
Log4j example with source code on Java Platform.
Using Different Logger Files :
Example on using different log files 
using Apache Log4j Framework.
Android Menu and MenuItem Example :
Example using Menu and MenuItem using Android Platform 
with code and explained
JSF example with source code :
JSF example of Tags and SelectBoxes 
with source code on Java Platform.
Android Text to Speech Example :
Android Example on using Text
2 Speech conversion explained with
source code Explained.
Android Examples :
List of ANDROid examples
with source code and output
screens captured and shown.
Android Gallery with SurfaceView :
Example showing Android Gallery
with SurfaceView and Spinner
Android Gallery Example Enhanced :
Example on Android Gallery View
explained with a very simple scenario
and appropriate screens captured and shown.
Example of using Log4J Part 2 :
Log4j example with source code on Java Platform.
JSF example with source code :
JSF example of Tags and Code Walk-through 
with source code on Java Platform.
List of Examples on Various Technologies :
List of Examples on Various Technologies and Frameworks.
Android Example on Expandable List :
Example on using Expandable ListView
on Android Platform.A step by step source code
explained.
Android ListView Example :
Example on Android ListView and
explained with a very simple scenario 
and article with appropriate screens 
captured and shown.
Using Quartz Scheduler Example :
Example on how to use Quartz Scheduler.
Example of using Mule ESB File Transport :
Example of using Mule ESB File Transport with simple
to explain source code.
Android Example on Expandable ListView :
Example on using Expandable ListView
on Android Platform.A step by step source code
explained.
Using Apache Commons Log With Example :
Example using Apache commons log 
with code and explained
Example using Tag Library :
Example on how to code and use
Custom Tag Library on Java Platform.
Android ListView Example :
Example on Android List View
explained with a very simple scenario 
and article with appropriate screens 
captured and shown.
JSF example on Resource Bundle :
JSF example of Resource Bundle with source code 
on Java Platform.
Android Gallery Example :
Example on Android Gallery View
explained with a very simple scenario
and appropriate screens captured and shown.
JDBC Transaction Isolation Levels :
A short write-up on JDBC Transaction
Isolation showing ways to achieve
various Isolation levels using JDBC.


References :
Tags: TabHost and TabActivity Example on Android Platform
Tags: ListView Example on Android Platform
Tags: android sensors list
Tags: android listview example
Tags: android imageview example
Tags: Android example download any file sourcecode
Tags: android expandable list dynamically created example
Tags: android expandable list example
Tags: Android Gallery surfaceviews spinner
Tags: Android example download any file sourcecode
Tags: Android Layout Example
Tags: Android Text To Speech Example

Tags: DOJO Example Dialog
Tags: DOJO Example Tree Widget
Tags: different logger file log4j
Tags: JDBC Transaction isolation
Tags: event handling java code
Tags: example quartz scheduler
Tags: example tag library web application
Tags: Flex
Tags: index
Tags: inmemory image creation java awt
Tags: JSF Example Main
Tags: JSF Example Tags CheckBoxes
Tags: JSF Example Tags dataTable
Tags: JSF Example Tags SelectBoxes
Tags: JSF Example Tags Walkthrough
Tags: JSF Example Validation
Tags: JSF Resource Bundle
Tags: log4j example 1
Tags: log4j example
Tags: Miscellaneous
Tags: Mule ESB File Transport
Tags: Mule ESB JMS Transport
Tags: stream download batch
Tags: sychronized block wait notify
Tags: thread wait notify example
Tags: using apache commons log
Tags: web load test
Tags: Wizard Framework Idea Java



DISCLAIMER :
The content provided in this page is not warranted and/or guaranteed by techienjoy.com. 
techienjoy.com is not liable for any negative consequences that may result/arise from 
implementing directly/indirectly any information covered in these pages/articles/tutorials.

All contents of this site is/are written and provided on an "AS IS" basis,
without WARRANTIES or conditions of any kind, either express or implied, including, without
limitation, merchantability, or fitness for a particular purpose. You are solely responsible
for determining the appropriateness of using or refering this and assume any risks associated
with this.

In spite of all precautions taken to avoid any typo in these pages, there might be some 
issues like grammatical mistakes and typos being observed in these pages, techienjoy.com
extends sincerest apologies to all our visitors for the same.



Android Examples || Android Examples

© Copyright 2010-2012, TECHIENJOY, All Rights Reserved.      Privacy Policy     Disclaimer & Terms & Conditions