Home >> Miscellaneous
Log4j Example : A simple way to show possibility of providing
various appenders in a single log4j.properties file
I have used Three appenders from Log4j 1.2.14, such as
ConsoleAppender, FileAppender and JDBCAppender.
This example will try to show how to use multiple Logger
and combination of appenders for various purpose and depending
on logging requirement.
Now in this example I shall try to configure three Loggers and
three appenders, such as shown below:
log4j.rootLogger=A B C
log4j.logger.A=DEBUG, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %C - %m%n
log4j.logger.B=DEBUG, A2
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.file=sample-log.txt
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d [%t] %-5p %C - %m%n
log4j.logger.C=ERROR, A3
log4j.appender.A3=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.A3.Driver=org.hsqldb.jdbcDriver
log4j.appender.A3.URL=jdbc:hsqldb:hsql://localhost/
log4j.appender.A3.User=sa
log4j.appender.A3.Password=
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=
insert into LogTable(log_detail) values('%d [%t] %-5p %C - %m%n')
|
I shall try to explain this log4j properties file,
In this example, there are three loggers with names A, B, C
and these loggers are defined in rootLogger property.
Each logger has various levels such as for A and B loggers, level is DEBUG
and for C logger, Level is ERROR.
Logger A has consoleAppender
Logger B has FileAppender
and Logger C has JDBCAppender.
As the value after comma separated level in logger definition, is that of
Appender, so Logger A has A1 appender, Logger B has A2 and Logger C has A3
as appender.
Each appender has to have some log destination and Layout with pattern.
Interestingly for JDBCAppender (in this example, appender A3), database
table with insert statement , along with database driver and url with login
credential required. But there are ways to provide database Connection from
some other DataSource with connection Pooling capabilities as well.
This can be done by overriding default JDBCAppender getConnection method.
For this example, I have used HSQLDB as database and following Table to
hold log messages:
create table LogTable
(log_detail varchar(300))
|
And the Java Main application is as follows:
import org.apache.log4j.*;
public class TestLog4j
{
private static Logger logger = Logger.getLogger("B");
public TestLog4j() {
testLogging();
}
public void testLogging() {
logger.debug("starting testLogging method....");
for(int i=0;i<10;i++) {
logger.info("counting work ..."+i);
}
logger.debug("closing testLogging method....");
logger.error("some error occured....");
}
public static void main(String[] args)
{
new TestLog4j();
}
}
|
Just notice the RED part in bold above, it shows that I am selecting
logger B and with Appender A2. So all DEBUG level logs will go to
Log file "sample-log.txt".
Now if I want to send all debug logs to filesystem and to database
table, then one can use two appenders A2 and A3 with Logger B.
like
log4j.logger.B=DEBUG, A2, A3
Hope this example helps in understanding a basic usage of Log4j
as logging framework.
If anything missed out , please let me know at
techienjoy at yahoo . com
|
|
|
|
|
| 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.
|
|
|
|
|
| Android Examples : |
List of ANDROid examples
with source code and output
screens captured and shown.
|
|
| Android ListView Example : |
Example on Android ListView and
explained with a very simple scenario
and article with appropriate screens
captured and shown.
|
|
|
|
|
|
|
|
| Android Gallery Example : |
Example on Android Gallery View
explained with a very simple scenario
and appropriate screens captured and shown.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Android ListView Example : |
Example on Android List View
explained with a very simple scenario
and article with appropriate screens
captured and shown.
|
|
| Android Sensors Example : |
Example on Android Sensors Listed and
explained with a very simple scenario
and article with appropriate screens
captured and shown.
|
|
| Google GWT Example : |
Example using GWT and some design patterns and various
ways of implementing this example.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Android Tab View Example : |
Example on Android Tab View
explained with a very simple scenario
and appropriate screens captured and shown.
|
|
|
|
|
|
|
|