我們可以通過(guò)設(shè)置Log Level,定義Appender和在配置文件中指定Layout對(duì)象來(lái)配置log4j。
log4j.properties
文件是一個(gè)log4j配置文件,它保留鍵 - 值對(duì)中的屬性。
默認(rèn)情況下, LogManager
在CLASSPATH中查找名為log4j.properties的文件。
以下代碼顯示了appender X的log4j.properties文件的語(yǔ)法:
# Define the root logger with appender X log4j.rootLogger = DEBUG, X # Set the appender named X to be a File appender log4j.appender.X=org.apache.log4j.FileAppender # Define the layout for X appender log4j.appender.X.layout=org.apache.log4j.PatternLayout log4j.appender.X.layout.conversionPattern=%m%n
log4j支持UNIX風(fēng)格的變量替換,如${variableName}。
以下示例顯示如何創(chuàng)建log4j.properties文件。
它將根記錄器的級(jí)別設(shè)置為DEBUG,并將名為FILE的附加器附加到它。
追加器FILE定義為org.apache.log4j.FileAppender,并寫入位于日志目錄中的名為“l(fā)og.out”的文件。
定義的布局模式為%m%n,這意味著打印的日志消息后面將跟隨換行符。
# Define the root logger with appender file log4j.rootLogger = DEBUG, FILE # Define the file appender log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=${log}/log.out # Define the layout for file appender log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n
我們使用DEBUG和兩個(gè)appenders。所有可能的選項(xiàng)是:
跟蹤
調(diào)試
信息
警告
錯(cuò)誤
致命
所有
這些級(jí)別將在Log4j日志記錄級(jí)別中解釋。
Apache log4j提供了用于將日志消息打印到不同目標(biāo)(如控制臺(tái),文件,套接字,NT事件日志等)的Appender對(duì)象。
每個(gè)Appender對(duì)象都具有與其關(guān)聯(lián)的不同屬性,這些屬性指示該對(duì)象的行為。
屬性 | 描述 |
---|---|
layout | Appender使用布局對(duì)象和轉(zhuǎn)換模式來(lái)格式化日志記錄信息。 |
target | 目標(biāo)可以是控制臺(tái),文件或其他項(xiàng)目,具體取決于附加程序。 |
level | 級(jí)別過(guò)濾日志消息。 |
threshold | Appender可以具有閾值級(jí)別,并忽略具有低于閾值級(jí)別的級(jí)別的任何日志記錄消息。 |
filter | Filter對(duì)象決定日志記錄請(qǐng)求是由特定Appender處理還是忽略。 |
我們可以使用以下方法在配置文件中添加一個(gè)Appender對(duì)象到Logger:
log4j.logger.[logger-name]=level, appender1,appender..n
我們可以用XML格式編寫相同的配置。
<logger name="com.apress.logging.log4j" additivity="false"> <appender-ref ref="appender1"/> <appender-ref ref="appender2"/> </logger>
要添加Appender對(duì)象,請(qǐng)使用以下方法:
public void addAppender(Appender appender);
addAppender()方法將Appender添加到Logger對(duì)象。我們可以在逗號(hào)分隔的列表中添加許多Appender對(duì)象到記錄器。
所有可能的追加者選項(xiàng)是:
AppenderSkeleton
AsyncAppender
ConsoleAppender
DailyRollingFileAppender
ExternallyRolledFileAppender
FileAppender
JDBCAppender
JMSAppender
LF5Appender
NTEventLogAppender
NullAppender
RollingFileAppender
SMTPAppender
SocketAppender
SocketHubAppender
SyslogAppender
TelnetAppender
WriterAppender
我們可以使用下面的布局列表。
以下log4j.properties
顯示如何將信息記錄到控制臺(tái)。
# 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
以下xml代碼將重寫上面列出的配置。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="true" 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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="console" /> </root> </log4j:configuration>
以下 log4j.properties
顯示如何將信息記錄到文件。
# Root logger option log4j.rootLogger=INFO, file # Direct log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender #Redirect to Tomcat logs folder #log4j.appender.file.File=${catalina.home}/logs/logging.log log4j.appender.file.File=C:\\my.log log4j.appender.file.MaxFileSize=10MB 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
以下xml代碼重寫上面列出的配置。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="file" class="org.apache.log4j.RollingFileAppender"> <param name="append" value="false" /> <param name="maxFileSize" value="10KB" /> <param name="maxBackupIndex" value="5" /> <!-- For Tomcat --> <param name="file" value="${catalina.home}/logs/my.log" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> </layout> </appender> <root> <level value="ERROR" /> <appender-ref ref="file" /> </root> </log4j:configuration>
以下 log4j.properties
顯示如何將信息記錄到文件和控制臺(tái)。
# Root logger option log4j.rootLogger=INFO, file, stdout # Direct log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=C:\\my.log log4j.appender.file.MaxFileSize=10MB 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 # 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
以下xml代碼將重寫上面列出的配置。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="true" 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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> </layout> </appender> <appender name="file" class="org.apache.log4j.RollingFileAppender"> <param name="append" value="false" /> <param name="maxFileSize" value="10MB" /> <param name="maxBackupIndex" value="10" /> <param name="file" value="${catalina.home}/logs/my.log" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="console" /> <appender-ref ref="file" /> </root> </log4j:configuration>
更多建議: