Logging in Java with log4j (0)

December 10th, 2008 by Frank Niedermann, under Java.

Instead of System.out.println() and System.err.println() it is a good thing to use a logger, like log4j.

This is an example how it can be done:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// creating a new Logger
private static final Logger logger = Logger.getLogger(MyLogger.class);
 
// configuration from XML-file
DOMConfigurator.configureAndWatch("logConfiguration.xml");
 
// log something
logger.info("Start");
 
// change log level
logger.setLevel(Level.ALL);
 
// log something more
logger.debug("Yep I was started");
logger.error("There is nothing to do!");

The configuration file:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> 
    </layout> 
  </appender> 
  <appender name="logfile" class="org.apache.log4j.FileAppender"> 
    <param name="file" value="MccImporter.log"/>
    <param name="Append" value="false"/>
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> 
    </layout> 
  </appender> 
  <root> 
    <!-- ALL | DEBUG | INFO | WARN | ERROR | FATAL | OFF -->
    <priority value ="info" /> 
    <appender-ref ref="console" /> 
    <appender-ref ref="logfile" /> 
  </root>
</log4j:configuration>

I’m using two appenders, one for console output and one for a logfile. The logfile gets overwritten every time the Java application starts (Append=false).

If the log content is a very time consuming process to evaluate it could be better to first check if logging is enabled on the according level before evaluating the expressen:

1
2
3
if (logger.isEnabledFor(Level.DEBUG)) {
  logger.debug(...);
}

Tagged with , , .

Leave a Comment