appenders_Log4j Appenders教程

appenders

Log4j Appenders provides configuration for logging such as console, file, database etc. Below image shows the log4j Appender class hierarchy.

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

log4j Appender (log4j Appender)

This is the base of log4j Appenders that defines the methods to implement by an appender.

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

log4j Appender骨架 (log4j AppenderSkeleton)

This class provides the code for common functionality, such as support for threshold filtering and support for general filters. This is the base implementation that is extended by all other appenders such as JDBCAppender, AsyncAppender, ConsoleAppender etc. It has only one abstract method append(LoggingEvent event) that is required to be implemented by all appenders. We can write our own custom appender by implementing this method.

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

常用的log4j Appenders (Commonly used log4j Appenders)

Some of the most commonly used appenders are:

一些最常用的附加器是:

  • ConsoleAppender: ConsoleAppender appends log events to System.out or System.err using a layout specified by the user. The default target is System.out. It’s good for debugging purposes, but not much beneficial to use in production environment.

    ConsoleAppender :ConsoleAppender使用用户指定的布局将日志事件追加到System.out或System.err。 默认目标是System.out。 这对于调试目的很有用,但是在生产环境中使用却没有太大好处。
  • RollingFileAppender, DailyRollingFileAppender: These are the most widely used appenders that provide support to write logs to file. RollingFileAppender is used to limit the log file size and number of backup files to keep. DailyRollingFileAppender is used to log into files on date basis. However DailyRollingFileAppender has been observed to exhibit synchronization issues and data loss and not recommended to use.

    RollingFileAppenderDailyRollingFileAppender :这些是使用最广泛的附加程序,提供了将日志写入文件的支持。 RollingFileAppender用于限制日志文件的大小和要保留的备份文件的数量。 DailyRollingFileAppender用于按日期登录文件。 但是,发现DailyRollingFileAppender会出现同步问题和数据丢失,因此不建议使用。
  • JDBCAppender: The JDBCAppender provides for sending log events to a database. Each append call adds to an ArrayList buffer. When the buffer is filled each log event is placed in a sql statement (configurable) and executed. BufferSize, db URL, User, & Password are configurable options in the standard log4j ways.

    JDBCAppender :JDBCAppender提供了将日志事件发送到数据库的功能。 每个追加调用将添加到ArrayList缓冲区。 当缓冲区已满时,每个日志事件都将放置在sql语句(可配置)中并执行。 BufferSize,db URL,用户和密码是标准log4j方式中的可配置选项。
  • AsyncAppender: The AsyncAppender lets users log events asynchronously. The AsyncAppender will collect the events sent to it and then dispatch them to all the appenders that are attached to it. You can attach multiple appenders to an AsyncAppender. Note that we can configure it only through XML based i.e DOMConfigurator. This is useful when you are generating a lot of logs and don’t care if they are being logged instantly. There are chances of logs getting lost incase server crash. The AsyncAppender uses a separate thread to serve the events in its buffer.

    AsyncAppender :AsyncAppender允许用户异步记录事件。 AsyncAppender将收集发送给它的事件,然后将它们分派到附加到它的所有追加程序。 您可以将多个附加程序附加到AsyncAppender。 注意,我们只能通过基于XML的DOMConfigurator对其进行配置。 当您生成大量日志并且不关心它们是否被立即记录时,这很有用。 万一服务器崩溃,日志很可能会丢失。 AsyncAppender使用单独的线程在其缓冲区中提供事件。
  • JMSAppender: A simple appender that publishes events to a JMS Topic. The events are serialized and transmitted as JMS message type ObjectMessage.

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

Log4j Appenders XML配置 (Log4j Appenders XML Configuration)

Below is the XML based configuration of commonly used ConsoleAppender and RollingFileAppender classes.

以下是常用的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>

You can check the appender classes code to find out the parameters you can configure. For example in JDBCAppender you can configure databaseURL, databaseUser, databasePassword etc.

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

Log4j Appender属性配置 (Log4j Appender Properties Configuration)

A simple example showing appenders configuration through property file. It’s defining all the above xml based configuration.

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

That’s all for a quick roundup on log4j appenders.

这就是对log4j追加程序的快速汇总。

References:

参考文献

翻译自: https://www.journaldev.com/10703/log4j-appenders-tutorial

appenders

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值