spring boot 使用logback时遇到的一些问题(未解决)

今天尝试配置logback,研究了一下,发现一些日志记录方式配不成功…所以记录一下。

 

一、spring boot已经自带logback了,不需要额外配置

spring boot应该是在推荐(钦定)logback作为默认的日志组件了。

二、写一个配置文件

根据网上的资料,写出如下配置文件:

logback.xml

1.文件的命名

当spring boot启动时,会自动扫描资源文件夹下的配置文件。命名一定要为logback.xml,否则会扫描不到。

2.我发现了这样一个配置:

这是什么意思呢?似乎是引入了别的位置的一个配置文件。所以我就在目录下找了一下base.xml文件,如下:

又引入了不少其他的配置文件,我认为这个是logback的默认配置文件,如果我们不进行自定义,默认的日志信息就是这样输出的。

我之后尝试删掉这行配置,结果是spring boot直接不能启动了(一直卡在启动过程中,应该是在运行中,也没有任何报错信息)。我也不知道发生了什么,有可能是一直在寻找默认配置文件,导致开在了启动环节。

3.注册想要输出日志的包的位置

这个配置扫描的是mybatis的dao包,可以输出执行sql的日志。

如果你想在service包下输出你的日志,就要在配置文件中进行注册。

三、在代码中进行日志记录

举个例子:

1.首先获取日志类:

这里的Logger是slf4j中的类,需要用LoggerFactory工厂类进行获取。

如果用的是log4j中的Logger,就要使用new logger来进行获取。

至于这两者之间有什么区别,网上有很多解释。但是我自己没有实践过,不敢乱说…

2.熟悉的日志操作

等等,和以前的log4j记录日志的方式基本上是一样的。

四、这里我想提一个我今天遇到的坑

我本来想把日志输出到日志文件中的,于是到logback官网找到log4j配置文件的转换工具,转换了一个以前用过的log4j文件。大概像这样:

结果遇到了不少坑

1.<root></root>配置要放到下面

我之前稍微有点强迫症,把<root></root>放到了<appender></appender>的上面,结果就报出test找不到对应方法的错误(大概是这个意思)。

把<root></root>配置要放到下面就什么事都没有了。

2.报出一堆莫名其妙的日志

数量很大,似乎基本上都是spring本身的日志信息。日志量大得吓了我一跳,问题是我根本不想关注这些日志呀。所以可能要想一些过滤的方法。

3.写日志文件不成功

我自以为配置得不错,最后发现根本没有输出debug.xml日志文件…这个配置应该还是有问题。

4.EL表达式中不能有“-”?

上面的配置文件会报出这样的一个错误:

按照提示,有“-”导致了这个错误。我把

中的“-”都去掉之后,就没这个问题了。问题是这里的yyyy-MM-dd是时间的默认格式,怎么能去掉“-”呢?会不会导致新的问题?

我个人感觉非常奇怪,似乎在使用log4j + properties配置文件的时候,格式要求反而没有这么严格。

尝试到了这里时,手头上来了新的工作,就没有继续研究下去了。总之这个配置我还没有搞懂,要另外找个时间研究一下。

五、总结

我挺喜欢logback的xml配置文件的形式。不太喜欢log4j的properties,感觉logback的配置方式比较正经,就和spring一样,所有配置文件都是xml,很整齐。(强迫症)

之前看网上说logback完全可以取代log4j(听说是作者嫌弃log4j写得太烂,然后重新写了logback),有更多的优点。希望以后可以实际体会到哦。

希望今天的问题,明天能够得以解决。

发表评论

电子邮件地址不会被公开。 必填项已用*标注