logback推荐配置

配置的正确姿势

线上和开发环境的配置要分离,对于java项目 
src/main/resources 目录下的东西都是正式环境使用的
src/test/resources 目录下的东西才是本机开发环境使用的

如果你发现自己本机开发启动程序的时候,经常要修改 src/main/resources 目录下的东东,那就说明你用错了。
这样做的一个后果就是,你提交代码的时候,忘记修改回来,结果发布到线上去了。轻则日志量暴增,重则引起运营事故。
所以大家千万注意!!!

推荐的配置内容 

logback.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
< configuration  scan = "false"  scanPeriod = "60 seconds"  debug = "false" >
     < appender  name = "RollingFile"  class = "ch.qos.logback.core.rolling.RollingFileAppender" >
         <!-- 可让每天产生一个日志文件,最多 7 个,自动回滚 -->
         < rollingPolicy  class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >
             < fileNamePattern >${catalina.home}/logs/fs-app-%d{yyyyMMdd}.log.zip</ fileNamePattern >
             < maxHistory >7</ maxHistory >
         </ rollingPolicy >
         < encoder >
             <!-- 日志中默认打印traceId和userId,方便定位问题,异常栈中去掉包含如下字符的行避免打印很多无用的信息-->
             < pattern >%d{HH:mm:ss} [%thread] %-5level %logger{12} %X{traceId} %X{userId} %msg%rEx{full,
                 java.lang.Thread,
                 javassist,
                 sun.reflect,
                 org.springframework,
                 org.apache,
                 org.eclipse.jetty,
                 $Proxy,
                 java.net,
                 java.io,
                 javax.servlet,
                 org.junit,
                 com.mysql,
                 com.sun,
                 org.mybatis.spring,
                 cglib,
                 CGLIB,
                 java.util.concurrent,
                 okhttp,
                 org.jboss,
                 }%n
             </ pattern >
         </ encoder >
     </ appender >
 
     <!-- 异步输出日志避免阻塞服务 -->
     < appender  name = "ASYNC"  class = "ch.qos.logback.classic.AsyncAppender" >
         < queueSize >512</ queueSize >
         < appender-ref  ref = "RollingFile" />
     </ appender >
 
     <!-- 配置基础组件为WARN级别,避免打印过多影响服务自己日志 -->
     < logger  name = "druid.sql"  level = "INFO" />
     < logger  name = "org.hibernate"  level = "WARN" />
     < logger  name = "org.springframework"  level = "WARN" />
     < logger  name = "org.apache"  level = "WARN" />
 
     < root  level = "info" >
         < appender-ref  ref = "ASYNC" />
     </ root >
</ configuration >
logback-test.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
< configuration  scan = "false"  scanPeriod = "60 seconds"  debug = "false" >
     < appender  name = "STDOUT"  class = "ch.qos.logback.core.ConsoleAppender" >
         < encoder >
             < pattern >%d{HH:mm:ss} [%thread] %-5level %logger{12} %X{traceId} %X{userId} %msg%n</ pattern >
         </ encoder >
     </ appender >
 
     < logger  name = "org.hibernate"  level = "WARN" />
     < logger  name = "org.springframework"  level = "WARN" />
     < logger  name = "org.apache"  level = "WARN" />
 
     < root  level = "DEBUG" >
         < appender-ref  ref = "STDOUT" />
     </ root >
</ configuration >

推荐日志级别

极为严格的做法是:只要log.error()记录的内容,都需要人及时响应的,有些公司会针对error进行字符串告警。
那么,针对一些:没有权限、参数错误、非法请求等,由于不合理的请求进来的,就建议打印warn而不是error,否则狼来了喊多了就没有用了。也会淹没真正的错误。
简单来讲,真正影响到正常用户的正常请求而且需要及时响应的错误,就打印ERROR,否则打印WARN。
一般信息打印info,针对调试操作,打印debug 

推荐使用日志占位符

log.info("this is a={}, b={}", a, b)
使用占位符,是真正需要打印的时候,才进行字符串拼接;如果不打印就不会拼接字符串。

log.error("cannot open url={}", url, e)
针对error,务必把异常栈打印出来,这里最有一个exception对象,不需要使用占位符,如果多一个占位符,则只会打印e.getMessage()的内容,就不方便查问题了。 

和日志中心的配合

通过引入日志中心的组件并添加配置,可以实现把特定logger和特定用户的日志进入日志中心,异常信息入日志中心等功能。

pom.xml引用
< dependency >
     < groupId >com.fxiaoke</ groupId >
     < artifactId >logconfig-core</ artifactId >
     < version >${logconfig-core.version}</ version >
</ dependency >
< dependency >
     < groupId >com.fxiaoke.common</ groupId >
     < artifactId >metrics-oss</ artifactId >
     < version >${metrics-oss.version}</ version >
</ dependency >

修改spring的配置文件,加入如下内容

spring配置
< bean  class = "com.fxiaoke.metrics.MetricsConfiguration" />

这样就可以通过 http://oss.firstshare.cn/logconf/ 在线调整日志级别,以及查看日志内容了

可以在 进程管理系统 http://oss.firstshare.cn/pms/ 查看自己进程的jvm信息,cpu和内容消耗等信息

还可以在日志中心 http://log.foneshare.cn/ 查到自己服务的所有error,不必登录多个机器查找了。可以针对userId搜索错误情况。

简易日志中心: http://oss.foneshare.cn/flog/

kibana:http://log.foneshare.cn/

 

转载于:https://www.cnblogs.com/ljsong/p/8692772.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值