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.
Example:
public String getUserEmail(int userId) {
logger.entry(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.entry(param);
logger.debug(QUERY_MARKER, "SELECT * FROM {}", table);
return logger.exit();
}
}
4.
Messages:
Very useful to standardize the format of an
application’s log messages.
Example:
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