logback不输出至文件_如何正确配置logback

一般来说,使用logback需要引用下面三个包:

  • ch.qos.logback:logback-classic
  • org.slf4j:jul-to-slf4j
  • org.slf4j:log4j-over-slf4j

不过一般来说,如果你引入了spring boot的starter(org.springframework.boot:spring-boot-starter),那么它会自动引用依赖spring-boot-starter-logging,而它自动包含了上面的三个包。也就是你使用spring boot的时候logback的包是自动引用的。

如何配置

spring boot会自动加载resources目录下的logback.xml(groovy),logback-spring.xml(groovy),spring官方推荐的是后面的一种方式。

例如我们要向项目中添加logback-spring.groovy的配置(xml的配置类似,这里就不赘述了)

首先,添加groovy的依赖:org.codehaus.groovy:groovy-all (xml可以省略这一步)

之后在文件里添加默认的logback信息

import 

之后在代码里就可以添加logger来输出了

import 

这里顺便说一下,LoggerFactory.getLogger()里面会设置该logger所对应的名字,支持class和String,这一点在之后的配置中十分重要。

pattern

上面文件的pattern规定了输出日志的格式,官方可以查到里面一些关键词的意思,这里捡一些重要的说:

  • %c{n} (%lo{n}, %logger{n}) 所对应logger的名字,后面跟长度,如果长度过长会吧前面的包名省略到首字母。
  • %C{n}(%class{n}) logger所在class的名字,其他的和上面一样。一般来说logger的名字和所在的class名字最好一样
  • %d{pattern} (%date{pattern}) 时间,pattern里可以用分号来指定输出多个
  • %L(%line) logger所在文件的行数
  • %m(%msg,%message) logger的信息
  • %p(%le, %level) 日志等级
  • %t(%thread) 线程名
  • %X{key:-defaultVal}(%mdc{key:-defaultVal}) MDC信息,MDC也是log4j的东西,也自然可以用在这里
  • %ex{depth}(%exception{depth}, %throwable{depth}) 错误信息,默认值是full,也就是全栈打出

制表对齐

  • %n 如果长度不够会在左边加空格
  • %-n 如果长度不够会在右边加空格
  • %.n 如果长度超过会从开头开始截取直到长度对应
  • %.-n 如果长度超过会从结尾开始截取直到长度对应
  • %n.m 第一种情况和第三种情况结合,1、2和3、4可以任意结合

此外,还可以通过"%black", "%red", "%green","%yellow","%blue", "%magenta","%cyan", "%white", "%gray", "%boldRed","%boldGreen", "%boldYellow", "%boldBlue", "%boldMagenta""%boldCyan", "%boldWhite"和"%highlight"来加颜色。

输出到文件

虽然调试的时候我们可以使用consle来看日志,不过要是线上环境的话不太可能用这个。把写到文件里是一个非常常用的做法。那么怎么设置输出到文件呢?

注意到文件上的appender了吗?只要把appender换成FileAppender就ok了,像这样:

import 

那么,能不能 我全都要 呢?

当然可以,你甚至可以使用filter来让不同的appender输出不同的日志

import 

切分日志文件

使用RollingFileAppender

import 

可以看到相比于FileAppender,RollingFileAppender里面多了一个rollingPolicy的元素。其实RollingFileAppender里需要RollingPolicy和TriggeringPolicy两个策略类型,一个用于决定轮换策略一个用于决定出发策略。但是TimeBasedRollingPolicy继承了这两个策略类型,所以只要设置一个就可以了。

在TimeBasedRollingPolicy里需要设置3个参数:

  • fileNamePattern: 分隔出来文件的命名方式,基本上是按时间来区分
  • maxHistory: 保留时间,超过这个时间的日志文件会自动删除
  • totalSizeCap: 每个单独的日志文件最大大小,如果超过这个大小会自动分割

当然还有其他可以设置的参数(比如压缩策略),具体可以参看TimeBasedRollingPolicy的源代码

自定义appender以及layout

我们可以看到所有的appender都继承了ch.qos.logback.core.Appender这个借口。事实上你只要你的appender继承这个接口之后完成里面的三个函数就可以了,其中最重要的是doAppend(E var1)这个函数,这个函数决定了log事件过来你会怎么处理。重写这个函数就可以了。

不过以上用的appender都是继承OutputStreamAppender,它会将日志信息以流式来处理。只要重现一下append(E var1)这个函数会自动帮你变成流输出。

对应不同环境

我们都知道spring可以通过设置spring.profiles.active的值来让系统指定对应的application配置文件。那么logback怎么做呢?

一种方法是在对应的application配置文件里或者启动时添加参数logging.config(仅限spring boot,其他应用可以使用logback.configurationFile)来指定对应的logback配置文件路径。

另一种方法是在配置文件里面使用springProfile(groovy 暂不支持springProfile,所以只能用xml):

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值