Log4j日志Appenders解释

本文概述

  • Log4j Appender XML配置
  • Log4j Appender属性配置
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="http://www.srcmini.com/System.out" /> < layout class="org.apache.log4j.PatternLayout"> < param name="ConversionPattern" value="http://www.srcmini.com/%-5p %c{1} - %m%n" /> < /layout> < /appender> < !-- rolling file appender --> < appender name="file" class="org.apache.log4j.RollingFileAppender"> < param name="File" value="http://www.srcmini.com/logs/main.log" /> < param name="Append" value="http://www.srcmini.com/true" /> < param name="ImmediateFlush" value="http://www.srcmini.com/true" /> < param name="MaxFileSize" value="http://www.srcmini.com/10MB" /> < param name="MaxBackupIndex" value="http://www.srcmini.com/5" /> < layout class="org.apache.log4j.PatternLayout"> < param name="ConversionPattern" value="http://www.srcmini.com/%d %d{Z} [%t] %-5p (%F:%L) - %m%n" /> < /layout> < /appender>

Log4j Appender属性配置【Log4j日志Appenders解释】让我们看一个简单的示例, 该示例显示通过属性文件(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

    推荐阅读