Tuesday, December 11, 2012

Log4j 2.0 - Some important features

Log4j’s latest 2.0 version has been recently released. Following are few of the important and very useful features of Log4j-2.0:

1.       Supports parameter substitution (same as slf4j)
For example:
   LOGGER.info (“User Id is { } and User Email is { }”, userId, userEmail);

2.       Flow Tracing:
To print the entry and exit of a method.
  public String getUserEmail(int userId) {
    User user = UserDao.getUser(userId)
    String email = user.getEmail();
    return logger.exit(email);
  This method will log following messages:
    19:08:07.061 TRACE com.class.MyClass 10 getUserEmail -  entry parms(1)
    19:08:07.061 TRACE com.class.MyClass 13 getUserEmail -  exit with (User.Email@gmail.com)
3.       Markers:
To log some special messages.
For example:
 public class MyApp {
   private Logger logger = LogManager.getLogger(MyApp.class.getName());
   private static final Marker QUERY_MARKER = MarkerManager.getMarker("SQL");
   public String doQuery(String table) {
     logger.debug(QUERY_MARKER, "SELECT * FROM {}", table);
     return logger.exit();
4.       Messages:
Very useful to standardize the format of an application’s log messages.
            logger.info("User {} has logged in using id {}", username, userId);        
      The above log message can be standardized by implementing a class ‘LoggedInMessage’ implementing ‘Message’ interface.
            logger.info(new LoggedInMessage(userName, userId)); 
                    (‘getFormattedMessage’ method of ‘Message’ interface is used to log the message string.)
Some more important types of messages are ThreadDumpMessage, TimestampMessage, MapMessage and few more.
5.       Plug-ins:
Log4j 2 uses a Plugin system that makes it extremely easy to extend the framework by adding new Appenders, Filters, Layouts, Lookups, and Pattern Converters without requiring any changes to Log4j.           

-          Sarang Anajwala      

No comments:

Post a Comment