logback与log4j1

slf4j是log实现的一种标准,logback和log4j都是依据此标准实现的。logback性能要优于log4j(具体有待了解),且有更丰富的log生成方式。其配置如下:

<!-- scan:true意思是,logback每过60秒扫描一次此配置文件,如果被修改则重新加载此文件;我们可以指定扫描间隔时间如 scanPeriod="30 
	seconds" -->
<configuration scan="true">
	<contextName>logback-test</contextName>
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<!-- 控制日志写入方式,encoder还有其它内容,但pattern已足够 -->
		<encoder>
			<!-- 日志输出模板 -->
			<!-- logger:日志名称,{}控制输出字符长度,显示效果有算法控制,去掉{}就显示全名 -->
			<!-- cn:contextName,上面定义的 -->
			<!-- level:日志级别-->
			<!-- relative:从项目启动到此条日志输出的相对时间(毫秒数) -->
			<pattern>
				%-5level %date{yy-MM-dd HH:mm} %cn %property{HOSTNAME} [%thread] %logger{36} - %message%n
			</pattern>
		</encoder>
	</appender>

	<!-- 三种滚动File生成方式 -->
	<!-- 第一种 TimeBasedRollingPolicy -->
	<!-- 此类是异步的 -->
	<appender name="FILE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 日志文件名称 -->
		<File>log/test.log</File>
		<!-- 控制日志是添加还是覆盖,true是添加,false是覆盖,默认是true -->
		<append>true</append>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 每天一个日志文件 -->
			<!-- 当前日志文件名是上面指定的文件名logFile.log,归档日志文件名格式如下 -->
			<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 保存最近30天的日志 -->
			<maxHistory>30</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>
				%-5level %date{yy-MM-dd HH:mm} %cn %property{HOSTNAME} [%thread] %logger{36} - %message%n
			</pattern>
		</encoder>
	</appender>

	<!-- 第二种 FixedWindowRollingPolicy -->
	<appender name="FILE2"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<File>log/test.log</File>
		<append>true</append>
		<encoder>
			<pattern>
				%-5level %date{yy-MM-dd HH:mm} %cn %property{HOSTNAME} [%thread] %logger{36} - %message%n
			</pattern>
		</encoder>
		<!-- test.log只保存10kb的数据,当数据超过10kb时便压缩归档,归档策略如下 -->
		<!-- 滚动策略 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<FileNamePattern>log/test_%i.log.zip</FileNamePattern>
			<MinIndex>1</MinIndex>
			<MaxIndex>3</MaxIndex>
		</rollingPolicy>
		<!-- 触发策略 -->
		<triggeringPolicy
			class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<MaxFileSize>10KB</MaxFileSize>
		</triggeringPolicy>
	</appender>

	<!-- 第三种 -->
	<appender name="FILE3"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>log/mylog.txt</file>
		<!-- 每当mylog.txt大于10kb时归档,且每天归档,归档日志名称如下 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 按周:yyyy-ww -->
			<fileNamePattern>log/mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
			<maxHistory>30</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy
				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>5MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<pattern>
				%-5level %date{yy-MM-dd HH:mm} %cn %property{HOSTNAME} [%thread] %logger{36} - %message%n
			</pattern>
		</encoder>
	</appender>
	
	<!-- 
		root logger 控制全局日志记录的级别,如果要单独控制某些类的日志记录级别,要单独定义logger; test2.sub包下面所有日志只有error级别的才被记录
		TRACE, DEBUG, INFO, WARN, ERROR, ALL ,OFF, INHERITED, NULL
		INHERITED与NULL一样,意思是从最近的祖先继承
	-->
	<logger name="test2.sub" level="error"/>
		
	<!-- 
		root logger , level控制记录日志的级别,debug及其以上级别的日志将被记录
		可选项:TRACE, DEBUG, INFO, WARN, ERROR, ALL or OFF
		级别排序:TRACE < DEBUG < INFO < WARN < ERROR
		不区分大小写
	-->
	<root level="debug">
		<appender-ref ref="FILE3" />
		<appender-ref ref="STDOUT" />
	</root>

</configuration>

项目中用到log4j1,稍微学习了点;当前log4j的版本是2.x,有完整文档,功能也较全;log4j1文档不全(也许是我没找到)且功能少,支持两种生成日志文件的策略而且还超差,配置如下:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

	<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%-5p %d{yy-MM-dd HH:mm} [%t] %c{36} - %m%n" />
		</layout>
	</appender>

	<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="log/myLog.log" />
		<param name="DatePattern" value="-yyyy-MM-dd" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%-5p %d{yy-MM-dd HH:mm} [%t] %c{36} - %m%n" />
		</layout>
	</appender>
	
	<appender name="FILE2" class="org.apache.log4j.RollingFileAppender">  
        <!-- 发布时需更改到指定目录 -->  
        <param name="File" value="log/myLog.log" />  
        <param name="Append" value="true" />  
        <param name="MaxFileSize" value="10KB" />   
        <param name="MaxBackupIndex" value="15" />  
        <layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%-5p %d{yy-MM-dd HH:mm} [%t] %c{36} - %m%n" />
		</layout>  
    </appender>  
	
	<root>
		<priority value="debug" />
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
	</root>
	
</log4j:configuration>  


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值