Log4j Appenders

2024 年 8 月 29 日 | 阅读 3 分钟

Log4j 提供了 Appender 对象,这些对象主要负责将日志消息打印到不同的目标,例如控制台、文件、NT 事件日志、Swing 组件、JMS、远程 UNIX syslog 守护程序、套接字等。

每个 appender 对象都有与其相关的不同属性,这些属性指定了该对象的行为。

属性描述
layoutAppender 使用 Layout 对象及其相关的转换模式来格式化日志信息。
target (目标)目标可以是文件、控制台或其他项目,具体取决于 appender。
level有必要控制日志消息的过滤。
thresholdAppender 可以包含一个与 logger 级别无关的阈值级别。Appender 会忽略任何包含低于阈值级别的日志消息。
filterFilter 对象可以读取超过级别匹配的日志信息,并决定日志请求是否应由特定的 Appender 处理或忽略。

我们可以通过在配置文件中添加以下设置以及给定方法,将一个 Appender 对象添加到 Logger 中。

我们也可以按如下方式用 XML 格式编写相同的配置

甚至我们也可以在程序中添加 Appender 对象,然后我们可以使用以下方法

addAppender() 方法用于将一个 Appender 添加到 Logger 对象。我们可以在一个以逗号分隔的列表中向一个 logger 添加多个 Appender 对象,每个对象将日志信息打印到不同的目标。

我们有一个 appender 列表。这些是

  • ConsoleAppender: Console Appender 使用用户指定的 layout 将日志事件追加到 System.out 或 System.err。System.out 是一个默认目标。它对于调试目的很有用,但在生产环境中不太有用。
  • FileAppender: 将日志事件追加到文件。它支持另外两个 appender 类
  • RollingFileAppender, DailyRollingFileAppender: 两者都是应用最广泛的 appender,它们提供对写入文件的日志的支持。
  • JDBCAppender: JDBCAppender 用于将日志事件发送到数据库。每个追加调用都添加到 ArrayList 缓冲区。当缓冲区填满时,每个日志事件都放在一个 SQL 语句中并执行。
  • SMTPAppender: 当发生特定日志事件(通常是错误或致命错误)时,它用于发送电子邮件。
  • SocketAppender: 它用于远程存储。
  • SyslogAppender: 它将消息发送到远程 syslog 域。
  • TelnetAppender: 它专门用于写入只读套接字。
  • WriterAppender: 它用于根据用户的选择将日志事件追加到 Writer 或 OutputStream。
  • AsyncAppender: AsyncAppender 允许用户异步记录事件。AsyncAppender 将保存发送给它的事件,然后将它们分发给所有附加到它的 appender。我们可以将多个 appender 附加到一个 AsyncAppender。
  • JMSAppender: 一个简单的 appender,它将事件发布到 JMS(Java 消息服务)主题。事件被序列化并作为 JMS 消息类型 ObjectMessage 传输。

其他是

  • AppenderSkeleton
  • LF5Appender
  • NTEventLogAppender
  • NullAppender
  • SocketHubAppender
  • ExternallyRolledFileAppender

Log4j Appender XML 配置

让我们看看常用 ConsoleAppender 和 RollingFileAppender 类的基于 XML 的配置

Log4j Appender 属性配置

让我们看一个简单的示例,展示通过属性文件 (log4j.properties) 进行 appender 配置。它定义了上述基于 xml 的配置


下一主题Log4j vs SLF4J