Log4j教程 - Log4j配置
我们可以通过设置Log Level,定义Appender和在配置文件中指定Layout对象来配置log4j。
log4j.properties
文件是一个log4j配置文件,它保留键 - 值对中的属性。
默认情况下, LogManager
在CLASSPATH中查找名为log4j.properties的文件。
log4j.properties语法:
以下代码显示了appender X的log4j.properties文件的语法:
# 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风格的变量替换,如${variableName}。
以下示例显示如何创建log4j.properties文件。
它将根记录器的级别设置为DEBUG,并将名为FILE的附加器附加到它。
追加器FILE定义为org.apache.log4j.FileAppender,并写入位于日志目录中的名为“log.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和两个appenders。所有可能的选项是:
-
跟踪
-
调试
-
信息
-
警告
-
错误
-
致命
-
所有
这些级别将在Log4j日志记录级别中解释。
追加者
Apache log4j提供了用于将日志消息打印到不同目标(如控制台,文件,套接字,NT事件日志等)的Appender对象。
每个Appender对象都具有与其关联的不同属性,这些属性指示该对象的行为。
属性 | 描述 |
---|---|
layout | Appender使用布局对象和转换模式来格式化日志记录信息。 |
target | 目标可以是控制台,文件或其他项目,具体取决于附加程序。 |
level | 级别过滤日志消息。 |
threshold | Appender可以具有阈值级别,并忽略具有低于阈值级别的级别的任何日志记录消息。 |
filter | Filter对象决定日志记录请求是由特定Appender处理还是忽略。 |
我们可以使用以下方法在配置文件中添加一个Appender对象到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对象,请使用以下方法:
public void addAppender(Appender appender);
addAppender()方法将Appender添加到Logger对象。我们可以在逗号分隔的列表中添加许多Appender对象到记录器。
所有可能的追加者选项是:
-
AppenderSkeleton
-
AsyncAppender
-
ConsoleAppender
-
DailyRollingFileAppender
-
ExternallyRolledFileAppender
-
FileAppender
-
JDBCAppender
-
JMSAppender
-
LF5Appender
-
NTEventLogAppender
-
NullAppender
-
RollingFileAppender
-
SMTPAppender
-
SocketAppender
-
SocketHubAppender
-
SyslogAppender
-
TelnetAppender
-
WriterAppender
日志布局
我们可以使用下面的布局列表。
- DateLayout
- HTMLLayout生成HTML格式的消息。
- PatternLayout
- SimpleLayout
- XMLLayout生成XML格式的消息
输出到控制台
以下log4j.properties
显示如何将信息记录到控制台。
# 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
显示如何将信息记录到文件和控制台。
# 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> </