Log4j教程

Log4j Appenders

Log4j Appenders

Log4j 提供 Appender 对象,主要负责将日志消息打印到不同的目的地,例如控制台、文件、NT 事件日志、Swing 组件、JMS、远程 UNIX 系统日志守护进程、套接字等。
每个 appender 对象都有与其相关的不同属性,这些属性指定了该对象的行为。
财产 说明
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()方法用于向Logger对象添加一个Appender。我们可以将许多 Appender 对象添加到逗号分隔列表中的记录器中,每个对象将日志信息打印到不同的目的地。
我们有一个 appender 列表。它们是:
ConsoleAppender: Console Appender 使用用户指定的布局将日志事件附加到 System.out 或 System.err。 System.out 是默认目标。它可用于调试目的,但在生产环境中使用的好处不大。 FileAppender: 将日志事件附加到文件中。它支持另外两个 appender 类: RollingFileAppender、DailyRollingFileAppender: 两者都是使用最广泛的附加程序,提供将日志写入文件的支持。 JDBCAppender: JDBCAppender 用于将日志事件发送到数据库。每个 append 调用都会添加到一个 ArrayList 缓冲区。当缓冲区被填满时,每个日志事件都被放置在一个 SQL 语句中并被执行。 SMTPAppender: 它用于在发生特定日志记录事件时发送电子邮件,通常是错误或致命错误。 SocketAppender: 用于远程存储。 SyslogAppender: 它将消息发送到远程系统日志域。 TelnetAppender: 它专门用于写入只读套接字。 WriterAppender: 它用于根据用户的选择将日志事件附加到 Writer 或 OutputStream。 AsyncAppender: AsyncAppender 允许用户异步记录事件。 AsyncAppender 将保存发送给它的事件,然后将它们分派给所有附加到它的 appender。我们可以将多个 appender 附加到 AsyncAppender。 JMSAppender: 将事件发布到 JMS(Java 消息服务)主题的简单 appender。事件被序列化并作为 JMS 消息类型 ObjectMessage 传输。
其他是:
AppenderSkeleton 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)显示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
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4