抛弃log4j改用logback

hfty0 2011-11-04

公司的新平台最近日志总出问题:

- 满容量后不自动备份,并且把该日志内容全部刷掉。。

- 满容量后不自动备份,继续写,导致日志文件异常之大。。

关于log4j的配置,RollingFileAppender几年来都是这么用的没什么好说的,

问题原因我还没找到,但估计多少和JDK升级到1.6有关

分割线============================================

logback的主页,链接一下:http://logback.qos.ch/

logback是log4j的创始人开发的新一代日志组件,性能更好,功能更强大!

logback实现了SLF4J,所以我们可以直接依赖SLF4J的接口~~

需要的jar:

slf4j-api-1.6.3.jar;

logback-core-0.9.30.jar

logback-classic-0.9.30.jar

可选的jar:

logback-access-0.9.30.jar

slf4j的版本要求不高,看教程是1.6.2,我用的是1.6.3

logback-access这个是Web控制台,JavaEE的可以考虑试试。

调用:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Hello {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Logger log = LoggerFactory.getLogger(Hello.class);
		log.info("hello world");
		
	}

}

注意,依赖的是SLF4J

然后运行一下就能看到效果了。

这里logback有一个默认的日志配置,如果classpath中找不到logback.xml或logback-test.xml,就会启用这个默认的配置。

关于logback的配置,总体思路和log4j类似,内置的日志类型更为丰富,详见:http://logback.qos.ch/manual/index.html

这里给一个我使用下来觉得不错的配置,供大家参考:

<configuration scan="true" scanPeriod="30 seconds">
	<appender name="ROLLING" 
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<prudent>true</prudent>
		<rollingPolicy 
			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>
				log/myApp-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
			<maxHistory>30</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy 
				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>10MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<pattern>%date %level [%thread] %logger.%class{0}#%method [%file:%line] %msg%n</pattern>
		</encoder>
	</appender>
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%date %level [%thread] %logger.%class{0}#%method [%file:%line] %msg%n</pattern>
		</encoder>
	</appender>
	
	<root level="info">
		<appender-ref ref="STDOUT" />
	</root>
	
	<logger name="myApp">
		<appender-ref ref="ROLLING" />
	</logger>
</configuration>
 

最后说一下改造后的效果:

恩,非常理想,为啥我不早点用这好东西抛弃log4j改用logback

相关推荐