📜  Log4j Appenders

📅  最后修改于: 2021-01-06 09:13:45             🧑  作者: Mango

Log4j Appenders

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

每个追加器对象都有与之相关的不同属性,这些属性指定该对象的行为。

Property Description
layout Appender uses the Layout objects and the conversion pattern associated with them to format the logging information.
target The target may be a file, a console, or another item depending on the appender.
level It is necessary to control the filtration of the log messages.
threshold Appender can contain a threshold level associated with it independent of the logger level. The Appender ignores any logging messages that contain a level lower than the threshold level.
filter The Filter objects can read logging information beyond level matching and decide whether logging requests should be handled by a particular Appender or ignored.

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

log4j.logger.[logger-name]=level, appender1,appender..n

我们还可以使用XML格式编写相同的配置,如下所示:


   
   

甚至我们也可以在程序内部添加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的配置:



    
    
        
    




    
    
    
    
    

    
        
    

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