In this tutorial, we are going to explaining Log4j brief introduction, why log4j, log4j package software, log4j components and log4j level. We are sharing Log4j examples to understand log4j framework easily.
Log4j Brief Introduction
Table of Contents
- Log4j is a Java library that specializes in logging.
- log4j is a reliable, fast and flexible logging framework (APIs) written in Java.
- Log4j distributed under the Apache Software License
- log4j is a framework to help the programmer output log statements to a variety of output targets.
Why Log4j
- With log4j it is possible to enable logging at runtime without modifying the application binary.
- Typically, you can configure Log4j via a configuration file. This means that you can change your logging configuration without requiring code updates. If you need to do something like set the log level to DEBUG for your deployed application in order to track down a particular bug, you can do this without redeploying your application. Instead, you can change your log configuration file, reread the configuration file, and your logging configuration gets updated.
Log4j Vs Stdout
- At its most basic level, you can think of it as a replacement for System.out.println’s in your code.
Why is it better than System.out.println’s?
- To begin with, System.out.println outputs to standard output, which typically is a console window. The output from Log4j can go to the console, but it can also go to an email server, a database table, a log file, or various other destinations.
Log4j Software
Log4j API package is distributed under the Apache Software License, a full-fledged open source license certified by the open source initiative.
The latest log4j version, including full-source code, class files and documentation can be found at http://logging.apache.org/log4j
Log4j logger contains three main components namely logger, appender and layout
Log4j Components
Logger
- Logger is the the top-level layer which provides the Logger object
- The Logger object is responsible for capturing logging information.
Syntax
private static final Logger logger = Logger.getLogger(Test.class);
Layout
- The Layout layer provides objects which are used to format logging information in different styles
- Layout objects play an important role in publishing logging information in a way that is human-readable and reusable.
Examples
- PatternLayout
- CSV
- HTML
- XML
- JSON
You will get more details on Layout from the official site Log4j Layouts
Appender
- This is a lower-level layer which provides Appender objects.
- The Appender object is responsible for publishing logging information to various preferred destinations such as a database, file, console, UNIX etc..
Example
- ConsoleAppender
- FileAppender
- FailoverAppender
- FlumeAppender
For more details please visit official site Log4j Appenders
Log4j Level
One of the distinctive features of log4j is the notion of hierarchical loggers. Using loggers it is possible to selectively control which log statements are output at arbitrary granularity.
log4j is designed with three goals in mind: reliability, speed and flexibility. There is a tight balance between these requirements. We believe that log4j strikes the right balance.
Log4j provides five standard levels of logging
log4j allows you to create custom levels.
Another great benefit of Log4j is that different levels of logging can be set. The levels are hierarchical and are as follows: TRACE, DEBUG, INFO, WARN, ERROR, and FATAL.
Hierarchical representation
TRACE > DEBUG > INFO > WARN > ERROR > FATAL.
DEBUG Level
- This log4j level helps developer to debug application.
- Level of message logged will be focused on providing support to a application developer.
INFO Level
- This log4j level gives the progress and chosen state information.
- This level will be generally useful for end user. This level is one level higher than DEBUG.
WARN Level
- This log4j level gives a warning about an unexpected event to the user.
- The messages coming out of this level may not halt the progress of the system.
ERROR Level
- The ERROR level designates error events that might still allow the application to continue running.
- This level is one level higher than WARN.
FATAL Level
- The FATAL level designates very severe error events that will presumably lead the application to abort.
- Once you get this level and it indicates application death.
ALL Level
- This log4j level is used to turn on ALL levels of logging.
- Once this is configured and the levels are not considered.
OFF Level
- This log4j level is opposite to ALL level.
- It turns off all the logging.
Log4j Level Table
Will Output Messages Log4j Levels | |||||||
Log4j Levels | TRACE | DEBUG | INFO | WARN | ERROR | FATAL | |
---|---|---|---|---|---|---|---|
TRACE | Y | Y | Y | Y | Y | Y | |
DEBUG | N | Y | Y | Y | Y | Y | |
INFO | N | N | Y | Y | Y | Y | |
WARN | N | N | N | Y | Y | Y | |
ERROR | N | N | N | N | Y | Y | |
FATAL | N | N | N | N | N | Y | |
ALL | Y | Y | Y | Y | Y | Y | |
OFF | N | N | N | N | N | N |
Graphical Representation
Reference Links:
Hello! I am Narayanaswamy founder and admin of narayanatutorial.com. I have been working in the IT industry for more than 12 years. NarayanaTutorial is my web technologies blog. My specialties are Java / J2EE, Spring, Hibernate, Struts, Webservices, PHP, Oracle, MySQL, SQLServer, Web Hosting, Website Development, and IAM(ForgeRock) Specialist
I am a self-learner and passionate about training and writing. I am always trying my best to share my knowledge through my blog.