采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
log4j2可以使用lambda表达式,实现lazy logging,还可以实现异步日志提交啊!
slf4j都没有这些功能吧?
可不可以项目里面只用log4j2,而不使用slf4j呢,因为想用到lazy logging啊?
slf4j是接口,你真要用的话,可以slf4j+log4j2
使用slf4j接口的话,就不能使用lambda表达式,slf4j提供的接口方法中没有函数做为参数的,查了一下logback也可以异步提交日志的,但好像效率不如log4j2(不知是不是真的),只是不能用lambda表达式做为方法参数而已。 看网上一些例子说,log.info("Title: {}", expensiveMethod());执行时会发现当把日志设到高于info的情况下,expensiveMethod()这个耗时的方法也会被执行,如果使用log4j2的lambda函数做为参数,写法是log.info("Title:{}", ()->expensiveMethod());那么当日志级别设到高于info的情况下,expensiveMethod()就不会被执行(原理不明白,官方文档是这么说的),觉得这是一个很酷的功能啊!
在网上查了一圈,没找到spring boot如何解耦slf4j,只能保留其jar包,然后全部使用log4j2的类与方法了。使用lombok的注解@Log4j2就可以在类文件中使用log4j2的类与方法了,这样是否可行?
追求性能的话,log4j2确实优于logback。只不过,springboot内置的是logback, 足够用了的话,我是推荐logback的。你说的用法是可行的。
登录后可查看更多问答,登录/注册
从0到1开发中小型企业级Java应用,并学会迭代重构技巧
8.1k 10
3.2k 4
6.7k 9
2.0k 32
4.0k 26