Logback使用小结

jar包下载https://mvnrepository.com/artifact/ch.qos.logback/logback-core/1.2.3

项目上需要独立于之前的日志体系单独打印一些特殊日志,由于之前的日志方法已经封装的很好了,而且还重写了appender和filter,本人胆小不敢随便将包logback-core-1.1.3.jar升级为现在最新的logback-core-1.2.3.jar,也就用不了网上普遍提到的SizeAndTimeBasedRollingPolicy。只能自己慢慢测试,终于能正常打出日志,所以在此总结一下
使用logback需要先创建logback.xml文件,在其中添加配置代码,如下

	<appender name="vendorAuthJobLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<File>log/vendorAuthJob.log</File>
		<append>true</append>
		<!--过滤器,只打INFO级别的日志-->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<maxFileSize>10MB</maxFileSize>
		</triggeringPolicy>
		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<fileNamePattern>log/vendorAuthJob-%i.log</fileNamePattern>
			<minIndex>1</minIndex>
			<maxIndex>10</maxIndex>
		</rollingPolicy>
		<encoder charset="UTF-8">
			<pattern>%msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>
	
	<logger name="vendorAuthJober" additivity="false" level="WARN">
		<appender-ref ref="vendorAuthJobLog"/>
    </logger>

<logger>标签

  • name属性即logger的名称
  • additivity属性指是否将这个logger的日志流反馈到root中,如果设置为true可能出现大量重复打印的现象。
  • level属性指要输出的日志等级,低于该等级的日志不会被输出。
  • <appender-ref ref=“vendorAuthJobLog”>即指该logger绑定的appender。

<appender>标签

  • flie属性即要生成的路径与日志名,没有的文件夹会自动生成。
  • append属性指如果有同名日志文件是否在该文件末尾继续添加。
  • filter属性,能过滤一些不想要的日志文件,比如这里设置成了INFO,就只会输出INFO级别的日志。注意这里说的是只有INFO级别,连高于INFO级别的WARN和ERROR也不会输出。之前提到我们下面配置的输出等级为WARN,只输出WARN及ERROR的日志,也就是说如果按照这个配置,就什么日志也打不出来了,所以配置时一定要注意好。
  • triggeringPolicy属性设置为SizeBasedTriggeringPolicy,就是说要按照日志大小生成新日志,下面maxFileSize配置为10MB,等日志文件大小到达10MB后会自动生成新的日志。
  • rollingPolicy属性设置为FixedWindowRollingPolicy,它能始终保证日志按时间顺序排序。maxIndex设置为10,最多会有10个日志文件。fileNamePattern决定这些文件的名称。
  • encoder属性决定日志文件的一些编码格式。

如果你想按时间保留日志文件,可以使用TimeBasedRollingPolicy,它同时继承了RollingPolicyTriggeringPolicy两个接口配置如下

	<appender name="conctrlConfigJobLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<File>log/conctrlConfigJob.log</File>
		<append>true</append>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- daily rollover -->
			<fileNamePattern>log/conctrlConfigJob.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- keep 30 days' worth of history capped at 3GB total size -->
			<maxHistory>30</maxHistory>
			<totalSizeCap>250MB</totalSizeCap>
		</rollingPolicy>
		<encoder charset="UTF-8">
			<pattern>%msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>
	<logger name="conctrlConfigJober" additivity="false" level="INFO">
		<appender-ref ref="conctrlConfigJobLog"/>
	</logger>

TimeBasedRollingPolicy根据fileNamePattern的配置方式,决定按多久为周期生成新日志,比如我们设置为%d{yyyy-MM-dd},就会每日0点生成新的日志。maxHistory决定最多的日志数为30,也就是会将日志保存30天,超时就会删除。totalSizeCap属性控制最大的日志文件总量,超过该大小后也将删除日志文件。

TimeBasedRollingPolicy虽然可以同时控制日志的时间和大小,但是没有maxFileSize属性,也就是说不能控制单个文件的大小。好在新的jar包中提供了SizeAndTimeBasedRollingPolicy方法,可以实现对文件总量和单个文件大小的多重控制。

代码中调用时直接按名称调用即可,不用过多赘述,如下

Logger log = LoggerFactory.getLogger("vendorAuthJober");
Logger log2 = LoggerFactory.getLogger("conctrlConfigJober");

如果想更灵活的打印日志文件,可以自己定义appender和filter方法。具体怎么弄,我暂时还没弄明白,敬请不要期待

文章参考资料:https://logback.qos.ch/index.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值