log4j in 8 slides Tarin Gamberini www.taringamberini.com Thanks to Ceki Gülcü for the “Short introduction to log4j” http://logging.apache.org/log4j/1.2/manual.html
Logger Named Hierarchy A logger is said to be an ancestor of another logger if its name followed by a dot is the prefix part in the descendant logger name. root com.site.software com.site.software.model com.site.software.model.dao com.site.software.model.dao.PersonDAOImpl com.site.software.view ● com.site.software is an ancestor logger of the descendant com.site.software.model.dao ● com.site.software is the parent logger of the child com.site.software.model
Levels A logger may be assigned to a level. ● Properties configuration file log4j.rootLogger=ERROR log4j.logger.com.site.software=INFO ● XML configuration file ● Java configuration file Logger.getRootLogger().setLevel(Level.ERROR); Logger.getLogger(“com.site.software”).setLevel(Level.INFO); ● levels are ordered TRACE < DEBUG < INFO < WARN < ERROR < FATAL
Level Inheritance The inherited level for a given logger L, is equal to the first non-null level in the logger named hierarchy, starting at L and proceeding upwards in the hierarchy towards the root logger. Assigned Inherited Logger Name Level level root ERROR ERROR com.site.software WARN WARN com.site.software.model INFO INFO com.site.software.model.dao null INFO com.site.software.model.dao.PersonDAOImpl null INFO com.site.software.view null WARN
Logging Request A log request of level p in a logger configured (either assigned or inherited, whichever is appropriate) with level q, is enabled if p >= q. package com.site.software.model.dao; import org.apache.log4j.Logger; public class PersonDAOImpl { private static final Logger LOG = Logger.getLogger(PersonDAOImpl.class); public PersonDAOImpl() { LOG.debug("You can't see me in the log because debug < INFO"); LOG.info("You will see me in the log because info = INFO"); LOG.warn("You will see me in the log because warn > INFO");
Appenders A logger may be assigned to an appender: a named output destination your log messages are forwarded to. # The root logger logs to the console log4j.rootLogger=ERROR, con # The com.site.software logger logs to a file log4j.logger.com.site.software=INFO, FileApp # The con appender will log in the console log4j.appender.con=org.apache.log4j.ConsoleAppender #The FileApp appender will log in a file log4j.appender.FileApp=org.apache.log4j.FileAppender
Appender Additivity Each enabled logging request for a given logger L will be forwarded to all the appenders in that logger LA as well as all the appenders higher HA in the logger named hierarchy. Logger Name LA HA root con com.site.software null con com.site.software.model FileApp, c con com.site.software.model.dao d FileApp, c, con com.site.software.view e con
Layout Conversion Pattern Each appender has a layout component responsible for formatting log messages accordingly to conversion patterns. log4j.appender.con=org.apache.log4j.ConsoleAppender log4j.appender.con.layout=org.apache.log4j.PatternLayout log4j.appender.con.layout.ConversionPattern=%d [%t] %-5p %m (%c:%L)%n Produced logs: 2010-05-14 19:29:11,996 [main] INFO You will see me in the log because info = INFO (com.site.software.model.dao.PersonDAOImpl:10) 2010-05-14 19:29:11,997 [main] WARN You will see me in the log because warn > INFO (com.site.software.model.dao.PersonDAOImpl:11)
A lot of Appenders and Layouts Appenders ● ConsoleAppender appends log events to System.out or System.err ● FileAppender appends log events to a file ● RollingFileAppender extends FileAppender to backup the log files when they reach a certain size ● DailyRollingFileAppender extends FileAppender so that the underlying file is rolled over at a user chosen frequency ● SMTPAppender sends an e-mail when a specific logging event occurs ● JMSAppender publishes log events to a JMS Topic ● JDBCAppender provides for sending log events to a database Layouts ● PatternLayout configurable string pattern in a printf C function style ● XMLLayout appends log events as a series of log4j:event (log4j.dtd) ● HTMLLayout outputs events in a HTML table

Log4j in 8 slides

  • 1.
    log4j in 8slides Tarin Gamberini www.taringamberini.com Thanks to Ceki Gülcü for the “Short introduction to log4j” http://logging.apache.org/log4j/1.2/manual.html
  • 2.
    Logger Named Hierarchy Alogger is said to be an ancestor of another logger if its name followed by a dot is the prefix part in the descendant logger name. root com.site.software com.site.software.model com.site.software.model.dao com.site.software.model.dao.PersonDAOImpl com.site.software.view ● com.site.software is an ancestor logger of the descendant com.site.software.model.dao ● com.site.software is the parent logger of the child com.site.software.model
  • 3.
    Levels A logger maybe assigned to a level. ● Properties configuration file log4j.rootLogger=ERROR log4j.logger.com.site.software=INFO ● XML configuration file ● Java configuration file Logger.getRootLogger().setLevel(Level.ERROR); Logger.getLogger(“com.site.software”).setLevel(Level.INFO); ● levels are ordered TRACE < DEBUG < INFO < WARN < ERROR < FATAL
  • 4.
    Level Inheritance The inheritedlevel for a given logger L, is equal to the first non-null level in the logger named hierarchy, starting at L and proceeding upwards in the hierarchy towards the root logger. Assigned Inherited Logger Name Level level root ERROR ERROR com.site.software WARN WARN com.site.software.model INFO INFO com.site.software.model.dao null INFO com.site.software.model.dao.PersonDAOImpl null INFO com.site.software.view null WARN
  • 5.
    Logging Request A logrequest of level p in a logger configured (either assigned or inherited, whichever is appropriate) with level q, is enabled if p >= q. package com.site.software.model.dao; import org.apache.log4j.Logger; public class PersonDAOImpl { private static final Logger LOG = Logger.getLogger(PersonDAOImpl.class); public PersonDAOImpl() { LOG.debug("You can't see me in the log because debug < INFO"); LOG.info("You will see me in the log because info = INFO"); LOG.warn("You will see me in the log because warn > INFO");
  • 6.
    Appenders A logger maybe assigned to an appender: a named output destination your log messages are forwarded to. # The root logger logs to the console log4j.rootLogger=ERROR, con # The com.site.software logger logs to a file log4j.logger.com.site.software=INFO, FileApp # The con appender will log in the console log4j.appender.con=org.apache.log4j.ConsoleAppender #The FileApp appender will log in a file log4j.appender.FileApp=org.apache.log4j.FileAppender
  • 7.
    Appender Additivity Each enabledlogging request for a given logger L will be forwarded to all the appenders in that logger LA as well as all the appenders higher HA in the logger named hierarchy. Logger Name LA HA root con com.site.software null con com.site.software.model FileApp, c con com.site.software.model.dao d FileApp, c, con com.site.software.view e con
  • 8.
    Layout Conversion Pattern Eachappender has a layout component responsible for formatting log messages accordingly to conversion patterns. log4j.appender.con=org.apache.log4j.ConsoleAppender log4j.appender.con.layout=org.apache.log4j.PatternLayout log4j.appender.con.layout.ConversionPattern=%d [%t] %-5p %m (%c:%L)%n Produced logs: 2010-05-14 19:29:11,996 [main] INFO You will see me in the log because info = INFO (com.site.software.model.dao.PersonDAOImpl:10) 2010-05-14 19:29:11,997 [main] WARN You will see me in the log because warn > INFO (com.site.software.model.dao.PersonDAOImpl:11)
  • 9.
    A lot ofAppenders and Layouts Appenders ● ConsoleAppender appends log events to System.out or System.err ● FileAppender appends log events to a file ● RollingFileAppender extends FileAppender to backup the log files when they reach a certain size ● DailyRollingFileAppender extends FileAppender so that the underlying file is rolled over at a user chosen frequency ● SMTPAppender sends an e-mail when a specific logging event occurs ● JMSAppender publishes log events to a JMS Topic ● JDBCAppender provides for sending log events to a database Layouts ● PatternLayout configurable string pattern in a printf C function style ● XMLLayout appends log events as a series of log4j:event (log4j.dtd) ● HTMLLayout outputs events in a HTML table