The de-facto logging framework for Java applications, Log4j provides distinctive features such as inheritance in loggers, separation of log handlers, filters, etc. Logging behavior can be controlled by editing a configuration file without touching the application binary.