logback输出多个日志文件

以前一直用slf4j+logback作为应用程序的日志组件,部署时,将日志输入到文件,以备检视。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>bau.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>logs/xxx.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>%-20(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{80} - %msg%n</pattern>
		</encoder>
	</appender>

	<root level="WARN">
		<appender-ref ref="file" />
	</root>
</configuration> 


最近一个项目中,需要将系统的一些信息记录到文件中,考虑到以后可能会加一些需求,如日志的格式,日志按一定大小切割,还是按时间切割等,手工写起来还是比较烦琐的。

考虑到logback中已经有此功能。于是查了下文档:


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>bau.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>logs/xxx.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>%-20(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{80} - %msg%n</pattern>
		</encoder>
	</appender>
	
	<appender name="event" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>E:\\event.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>E:\\event.%d{yyyy-MM-dd}.log</fileNamePattern>
			<maxHistory>30</maxHistory>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>%msg%n</pattern>
		</encoder>
	</appender>

	<logger name="cn.company.bau.desktop.composite.EventRealTimeComposite" level="INFO" additivity="false">
		<appender-ref ref="event" />
	</logger>

	<root level="WARN">
		<appender-ref ref="file" />
	</root>
</configuration>  


新增一个event的appender名字叫event,新加一个logger,将其apender指定为event,指定其level为INFO,additivity="false"这个最重要,指定日志不向上一级输入。

之后,在类cn.company.bau.desktop.composite.EventRealTimeComposite中,就可以用logger.info("xxx")输出日志,日志会记录到event.log中,并按策略生成,以供分析


总结:

充分利用开源组件的特性,而且功能丰富

代码只写一行,大提高了生产效率


你可能感兴趣的:(thread,File,Class,文档,encoding)