log4j
From Wikipedia, the free encyclopedia
Apache log4j | |
---|---|
Developed by | Apache Software Foundation |
Latest release | 1.2.15 / August 29, 2007 |
Written in | Java |
OS | Cross-platform |
Genre | Logging Tool |
License | Apache License 2.0 |
Website | logging.apache.org/log4j |
Log4j is a Java-based logging utility. It was originally written by Ceki Gülcü and is now a project of the Apache Software Foundation. It is used primarily as a debugging tool. log4j is one of several Java Logging Frameworks.
Ceki Gülcü has since started the SLF4J and Logback projects, with the intention of offering a compatible successor to log4j.
Log4j 1.2 offers six standard logging levels; from highest (coarsest) to lowest (finest):
- FATAL
- ERROR
- WARN
- INFO
- DEBUG
- TRACE
Also, custom logging levels can be added.
There are two ways to configure log4j. One is with a properties file and the other is with an XML file. Within either you can define 3 main components: Loggers, Appenders and Layouts. Configuring logging via a file has the advantage of turning logging on or off without modifying the application that uses log4j. The application can be allowed to run with logging off until there's a problem, for example, and then logging can be turned back on simply by modifying the configuration file.
Loggers are logical log file names. They are the names that are known to the Java application. Each logger is independently configurable as to what level of logging (FATAL, ERROR, etc) it currently logs. In early versions of log4j, these were called category and priority, but now they're called logger and level, respectively.
The actual outputs are done by Appenders. There are numerous Appenders available, with descriptive names, such as FileAppender, ConsoleAppender, SocketAppender, SyslogAppender, NTEventLogAppender and even SMTPAppender. Multiple Appenders can be attached to any Logger, so it's possible to log the same information to a file locally and to a socket listener on another computer, for example.
Appenders use Layouts to format log entries. A popular way to format one-line-at-a-time log files is PatternLayout, which uses a pattern string, much like the C / C++ function printf. There are also HTMLLayout and XMLLayout formatters for use when HTML or XML formats are more convenient.
Contents |
[edit] Example configuration
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "http://logging.apache.org/log4j/docs/api/org/apache/log4j/xml/log4j.dtd"> <log4j:configuration> <!-- an appender is an output destination, such as e.g. the console or a file; names of appenders are arbitrarily chosen --> <appender name="stdout" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" /> </layout> </appender> <!-- loggers of category 'org.springframework' will only log messages of level info or higher; if you retrieve Loggers by using the class name (e.g. Logger.getLogger(AClass.class)) and if AClass is part of the springframework.org package, it will belong to this category --> <category name="org.springframework"> <priority value="info"/> </category> <category name="org.acegisecurity"> <priority value="info"/> </category> <root><!-- the root category --> <!-- all log messages of level debug or more serious will be logged, unless defined otherwise --> <!-- all log messages will be logged to the appender 'stdout', unless defined otherwise --> <priority value="debug" /> <appender-ref ref="stdout" /> </root> </log4j:configuration>
[edit] Log viewer
Apache has another project named Chainsaw which was intended to use log4j generated log files. Chainsaw is a java-based GUI viewer with a lot of functionality. Chainsaw also uses similar configuration file as log4j. Other log viewing tools can be used with log4j too.
[edit] External links
- The Complete log4j Manual by Ceki Gülcü
- Official Log4j Homepage
- Log4j Javadocs
- Setting up a Log4j Socket Server to Email You Errors From Your Java Programs
- LogMX: a commercial, Log4j file viewer
[edit] Ports
- log5j - A 'modern' log4j that supports printf and has additional performance features.
- dlib C++ library Homepage - A port for C++
- Log4cxx Homepage - apache port for C++
- Log4cplus Homepage - Another port for C++ (outdated)
- Log4cpp Homepage - Yet another port for C++ (outdated)
- Log4plsql HomePage] - A port to the Oracle PL/SQL
- Log4c - A port for C
- Log4perl - A port for Perl
- Log4js - A port for JavaScript
- logging - The official logging module for Python inspired by log4j.
- Log4r - Ruby logging module inspired by log4j
- Log4net - A port to the Microsoft .NET Framework
- log4php a port for PHP
- logback a purported successor to log4j, designed by log4j's founder
- log4sh a port for various Unix shells including sh, bash, dash and ksh
- Log4Cocoa - A Port for Cocoa
- Log4D - A Port for Delphi
|