本文概述
Log4j提供了Appender对象, 这些对象主要负责将日志消息打印到不同的目的地, 例如控制台, 文件, NT事件日志, Swing组件, JMS, 远程UNIX syslog守护程序, 套接字等。
每个追加器对象都有与之相关的不同属性, 这些属性指定该对象的行为。
Property | Description |
---|---|
layout | Appender使用Layout对象和与其关联的转换模式来格式化日志信息。 |
target | 根据附加程序, 目标可以是文件, 控制台或其他项目。 |
level | 有必要控制日志消息的过滤。 |
threshold | Appender可以包含与之关联的阈值级别, 而与记录器级别无关。 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对象添加到记录器, 每个记录器将记录信息打印到单独的目的地。
我们有一个附录列表。这些是:
- ConsoleAppender:Console Appender使用用户指定的布局将日志事件附加到System.out或System.err。 System.out是默认目标。它可用于调试目的, 但在生产环境中使用却无济于事。
- FileAppender:将日志事件追加到文件。它支持另外两个附加器类:
- RollingFileAppender, DailyRollingFileAppender:两者都是使用最广泛的附加程序, 它们提供将日志写入文件的支持。
- JDBCAppender:JDBCAppender用于将日志事件发送到数据库。每个追加调用将添加到ArrayList缓冲区。当缓冲区已满时, 每个日志事件都将放置在SQL语句中并执行。
- SMTPAppender:用于在发生特定的日志记录事件时发送电子邮件, 通常发生错误或致命错误时。
- SocketAppender:用于远程存储。
- SyslogAppender:它将消息发送到远程syslog域。
- TelnetAppender:它专门写给只读套接字。
- WriterAppender:用于根据用户的选择将日志事件追加到Writer或OutputStream。
- AsyncAppender:AsyncAppender允许用户异步记录事件。 AsyncAppender将保存发送给它的事件, 然后将它们分派到所有附加到它的附加程序。我们可以将多个附加程序附加到AsyncAppender。
- JMSAppender:一个简单的附加程序, 它将事件发布到JMS(Java消息服务)主题。事件被序列化并作为JMS消息类型ObjectMessage传输。
其他是:
- Appender骨骼
- LF5Appender
- NTEventLogAppender
- NullAppender
- SocketHubAppender
- ExternallyRolledFileAppender
Log4j Appender XML配置
让我们看看常用的ConsoleAppender和RollingFileAppender类的基于XML的配置:
<!-- console appender -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n" />
</layout>
</appender>
<!-- rolling file appender -->
<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/main.log" />
<param name="Append" value="true" />
<param name="ImmediateFlush" value="true" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="5" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %d{Z} [%t] %-5p (%F:%L) - %m%n" />
</layout>
</appender>
Log4j Appender属性配置
让我们看一个简单的示例, 该示例显示通过属性文件(log4j.properties)的追加程序配置。它定义了以上基于xml的配置:
#Define console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
logrj.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %c{1} - %m%n
#Define rolling file appender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/main.log
log4j.appender.file.Append=true
log4j.appender.file.ImmediateFlush=true
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %d{Z} [%t] %-5p (%F:%L) - %m%n
评论前必须登录!
注册