Log4j Appenders教程

时间:2020-02-23 14:37:18  来源:igfitidea点击:

Log4j Appenders提供用于日志记录的配置,例如控制台,文件,数据库等。
下图显示了log4j Appender类的层次结构。

log4j Appender

这是log4j Appenders的基础,它定义了由附加程序实现的方法。

log4j Appender骨架

此类提供了用于通用功能的代码,例如,支持阈值过滤和支持常规过滤器。
这是所有其他附加程序(如JDBCAppender,AsyncAppender,ConsoleAppender等)扩展的基本实现。
它只有一个抽象方法append(LoggingEvent event),所有附加程序都必须实现。
我们可以通过实现此方法来编写自己的自定义追加程序。

常用的log4j Appenders

一些最常用的附加器是:

  • ConsoleAppender:ConsoleAppender使用用户指定的布局将日志事件追加到System.out或者System.err。
    默认目标是System.out。
    它可以很好地用于调试目的,但在生产环境中使用并没有太大好处。

  • RollingFileAppender,DailyRollingFileAppender:这些是使用最广泛的附加程序,可提供将日志写入文件的支持。
    RollingFileAppender用于限制日志文件的大小和要保留的备份文件的数量。
    " DailyRollingFileAppender"用于按日期登录文件。
    但是,发现DailyRollingFileAppender会出现同步问题和数据丢失,因此不建议使用。

  • JDBCAppender:JDBCAppender提供用于将日志事件发送到数据库。
    每个追加调用将添加到ArrayList缓冲区。
    当缓冲区已满时,每个日志事件都将放置在sql语句(可配置)中并执行。
    BufferSize,db URL,用户和密码是标准log4j方式中的可配置选项。

  • AsyncAppender:AsyncAppender允许用户异步记录事件。
    AsyncAppender将收集发送给它的事件,然后将它们分派到附加到它的所有追加程序。
    您可以将多个附加程序附加到AsyncAppender。
    请注意,我们只能通过基于XML的DOMConfigurator对其进行配置。
    当您生成大量日志并且不在乎是否立即记录日志时,此功能很有用。
    万一服务器崩溃,日志很可能会丢失。
    AsyncAppender使用单独的线程在其缓冲区中提供事件。

  • JMSAppender:一个简单的追加器,它将事件发布到JMS主题。
    事件被序列化并作为JMS消息类型ObjectMessage传输。

Log4j Appenders 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>

您可以检查附加程序类代码以找出可以配置的参数。
例如,在JDBCAppender中,您可以配置databaseURL,databaseUser,databasePassword等。

Log4j Appender属性配置

一个简单的示例,显示通过属性文件的追加程序配置。
它定义了以上所有基于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