Log4j In 30 Minutes Or Less - PowerPoint PPT Presentation

1 / 14
About This Presentation
Title:

Log4j In 30 Minutes Or Less

Description:

Part of the Jakarta project, a sub-project of Apache ... { log.error('Oops!', e); Log Output From The Example. 0 [main] INFO Demo - Starting up... – PowerPoint PPT presentation

Number of Views:364
Avg rating:3.0/5.0
Slides: 15
Provided by: johnm50
Category:
Tags: less | log4j | minutes | oops

less

Transcript and Presenter's Notes

Title: Log4j In 30 Minutes Or Less


1
Log4j In 30 Minutes Or Less
2
The Who, What, When and Where
  • Part of the Jakarta project, a sub-project of
    Apache
  • Jakarta is the sub-heading for all the Java
    oriented Apache projects
  • Open source, BSD style license library providing
    logging for Java programs
  • Precursors first appeared in 1996
  • Http//jakarta.apache.org/log4j/docs/index.html

3
The Basics
  • Logger
  • A hierarchical tree with Appender, Level, and
    Layout settings at every level
  • Settings can also inherit to lower tree levels
  • Level
  • Five built in levels (plus all and off)
  • Appenders
  • Appenders handle log output
  • Many appenders available
  • Layouts

4
Loggers
  • The biggest difference between System.out.println
    and Log4J is loggers
  • Creates a hierarchy that we use to set logging
    options
  • Flow of settings is outward toward leaves of tree
  • Hierarchy based on dotted names (i.e. com.pdxinc
    is parent to com.pdxinc.nhinar)
  • The same scheme is used for Java classes so you
    can just use your class name for your logger name

5
Levels
  • Allows you to prioritize your logged messages
  • Debug, Info, Warn, Error and Fatal
  • Other priorities possible but usually unnecessary
  • Determines which log items are actually logged
  • For example, a given line of code might always
    attempt to log an item at Debug level but if the
    logger tree is not set to log items below Error
    level then the log message will be ignored and
    not make it to an appender

6
Appenders
  • Console, file, rolling file, GUI, TCP/IP, NT
    Event log, Unix Syslog daemon, JDBC, SMTP, JMS
  • Multiple appenders can be used
  • An appender could service only part of the tree
  • One appender could be used for auditing while
    another is used for general logging

7
Layouts
  • Method of customizing output from logger
  • Simple, HTML, Pattern, TTCC, and XML layouts are
    included
  • Pattern layout can be used to format according to
    a pattern string (ala printf)
  • Custom object renderers can be installed

8
Configuration
  • PropertiesConfigurator
  • Some options cannot be set in the config file but
    the file is easier to edit and read than its XML
    equivalent
  • DOMConfigurator
  • XML file specifies configuration
  • Can set up asynchronous logging
  • Runtime configurable
  • Any option that can be set at startup can be set
    while a program is running
  • configureAndWatch() method allows configuration
    updates to a running program

9
An Example
import org.apache.log4j. public class Demo
static Logger log Logger.getLogger(Demo.class.
getName()) public static void
main(String args) BasicConfigurator.co
nfigure() log.info("Starting
up...") log.setLevel(Level.WARN)
log.info("This message should not
appear!") try //
Divide by zero. int x 5
int y 20 / (5 - x) catch (Exception
e) log.error("Oops!", e)

10
Log Output From The Example
0 main INFO Demo - Starting up... 10 main
ERROR Demo - Oops! java.lang.ArithmeticException
/ by zero at Demo.main(Demo.java17)
11
Tools
  • Chainsaw
  • Bundled with Log4j 1.2
  • Captures log messages sent via TCP/IP
  • Can load a log generated in XML form
  • Lumbermill
  • Captures log messages sent via TCP/IP
  • A little more attractive than Chainsaw and it has
    the nifty feature that it builds a logger tree on
    the fly and allows you to do filtering on the
    client machine
  • No XML log support

12
Optimization
  • When the generation of your logging message takes
    a long time, you might want to check to see if it
    will ever make it to an appender
  • Functions like isDebugEnabled() and
    isEnabledFor() on the Logger class allow you to
    test first (testing is very fast) and then
    generate the string and log it if you know the
    message will actually be logged

13
Why Log4j?
  • Features
  • Easy to use, even with existing code
  • Optimized for speed
  • Thread-safe
  • Frequently used more robust
  • Free and open source
  • Synchronous and asynchronous logging

14
Questions?
Write a Comment
User Comments (0)
About PowerShow.com