记一次排查项目日志链不起作用的问题

背景

今天上午,部门leader给我下发了一个任务,任务也不是很难,不过却是需要费些心思。部门leader告诉我有一个项目的日志链出了点问题,控制台格式化输出的配置不起作用,让我去查查资料看看是怎么回事儿,需要怎么修改。项目的框架是Spring Data Jpa的,日志是用的logback配置的。

思考如何入手

可能你看到这里,会想,这能思考啥,不就直接找资料么。我只能说,我没配置过logback.xml,完全不知道配置文件中的标签的含义以及该怎么修改。于是我用的最笨的办法,去找logback配置大全。
long time later……
我发现这条路走不通,因为我就算知道了标签的含义及用法,我还是不会用。
所以我就用了另一个办法,直接将我的问题放到百度上搜,称之为‘面向搜索引擎编程’,嗯,,就是这样。

解决问题的过程

这里我要先说明下,文章中所有的涉及具体代码的部分,我都会整理一个大概(等于网上都能查到的样子),其他的因为涉及公司的项目,所以没法贴出来。

首先,我要先去了解一下标签<appender>的作用,不过在了解<appender>之前,得先去了解一下logback,因为一直用的都是log4j

这里我先放上我从网上搜到的logback相比于log4j的优点:

  • 同样的代码路径,Logback 执行更快
  • 更充分的测试
  • 原生实现了 SLF4J APILog4J 还需要有一个中间转换层)
  • 内容更丰富的文档
  • 支持 XML 或者 Groovy 方式配置
  • 配置文件自动热加载
  • IO 错误中优雅恢复
  • 自动删除日志归档
  • 自动压缩日志成为归档文件
  • 支持 Prudent 模式,使多个 JVM 进程能记录同一个日志文件
  • 支持配置文件中加入条件判断来适应不同的环境
  • 更强大的过滤器
  • 支持 SiftingAppender(可筛选 Appender
  • 异常栈信息带有包信息

不过这些优点,在我解决问题的过程也只是体会到前几点,没有全部体会到。但是我相信,其他的优点在后续的开发过程中我都会一一体会到。

回归正题,<appender>负责写日志的组件,它有两个必要属性nameclassname指定appender名称,class指定appender的全限定名。这正是问题所在,我要解决的问题就是控制台无法按照自定义格式进行输出。

那么有了入口就可以继续走了。

在我从网上众多文章中搜索一阵之后,才发现,其他网上的文章都是差不多一样的,内容80%以上是重复的。这也正说明了logback的配置方式详解其实非常的全面。

我查到有一个classConsoleAppender的类,这个类是用来控制控制台输出的。看到这里我觉得我的项目中应该就是缺少一个这个类。待我加上去之后,奇迹发生了,控制台确实是按照自定义的格式去输出了。同时,我也学会了另一种日志记录方式logback

感受

说实话,没想写啥感受的,因为确实没啥感受。但是习惯性的就写上了,因为在公司里这段时间是在轮岗,轮岗期间要求每天写日报,那写习惯了之后,就会写文章就写感受。虽然也不会有人看,但也可以记录一下。

这次解决问题,速度不算快,甚至可以称得上是慢的,毕竟对logback也不是很了解。而且,从另一方面来讲,我一开始的出发点就是有错的,我错误的领会了问题的发生处。从而错误地切入的了问题,虽然最后解决问题了,但是也浪费了不少时间。

所以,后面再解决问题的时候,首先要将出现的问题先搞明白是什么问题,问题出现的地点。然后再看问题相关的功能或者代码。最后解决问题。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×