This tutorial will present minimum log4j.properties configuration file to output the log to console or to file. The settings are for log4j version 1.2.x.
To File
There are a few details that are important in the log4j.properties file:
rootLogger: defines the level of logging. For production usually should be used ERROR only. Using a lower level it might affect the performance. For more details on levels check the Log4j Logging Levels tutorial.
appender location: you can setup the file location.
ConversionPattern: defines the layout of the output.
MaxFileSize: defines the max log file size.
MaxBackupIndex: defines the max number of log files to be kept.
# Root logger option - if you need more info go with DEBUG
log4j.rootLogger=INFO, file
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\log.txt
log4j.appender.file.MaxFileSize=15MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %c{1}:%L - %m%n
To Console
# Root logger option
log4j.rootLogger=INFO, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %c{1}:%L - %m%n
You can add both file and console output in the same log4j.properties file. The difference will be on the rootLogger
log4j.rootLogger=INFO, file, stdout
ConversionPattern
The following table explains the characters used in the ConversionPattern and all other characters that you can use in your custom pattern:
Conversion Character | Meaning |
---|---|
c | Used to output the category of the logging event. For example, for the category name "a.b.c" the pattern %c{2} will output "b.c". |
C | Used to output the fully qualified class name of the caller issuing the logging request. For example, for the class name "org.apache.xyz.SomeClass", the pattern %C{1} will output "SomeClass". |
d | Used to output the date of the logging event. For example, %d{HH:mm:ss,SSS} or %d{dd MMM yyyy HH:mm:ss,SSS}. |
F | Used to output the file name where the logging request was issued. |
l | Used to output location information of the caller which generated the logging event. |
L | Used to output the line number from where the logging request was issued. |
m | Used to output the application supplied message associated with the logging event. |
M | Used to output the method name where the logging request was issued. |
n | Outputs the platform dependent line separator character or characters. |
p | Used to output the priority of the logging event. |
r | Used to output the number of milliseconds elapsed from the construction of the layout until the creation of the logging event. |
t | Used to output the name of the thread that generated the logging event. |
x | Used to output the NDC (nested diagnostic context) associated with the thread that generated the logging event. |
X | The X conversion character is followed by the key for the MDC. For example, X{clientIP} will print the information stored in the MDC against the key clientIP. |
% | The literal percent sign. %% will print a % sign. |