请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

现在难道log4j2不是最好的日志工具吗?

log4j2可以使用lambda表达式,实现lazy logging,还可以实现异步日志提交啊!

slf4j都没有这些功能吧?

可不可以项目里面只用log4j2,而不使用slf4j呢,因为想用到lazy logging啊?

正在回答

1回答

slf4j是接口,你真要用的话,可以slf4j+log4j2

0 回复 有任何疑惑可以回复我~
  • 提问者 taoy #1
    使用slf4j接口的话,就不能使用lambda表达式,slf4j提供的接口方法中没有函数做为参数的,查了一下logback也可以异步提交日志的,但好像效率不如log4j2(不知是不是真的),只是不能用lambda表达式做为方法参数而已。
    看网上一些例子说,log.info("Title: {}", expensiveMethod());执行时会发现当把日志设到高于info的情况下,expensiveMethod()这个耗时的方法也会被执行,如果使用log4j2的lambda函数做为参数,写法是log.info("Title:{}", ()->expensiveMethod());那么当日志级别设到高于info的情况下,expensiveMethod()就不会被执行(原理不明白,官方文档是这么说的),觉得这是一个很酷的功能啊!
    回复 有任何疑惑可以回复我~ 2017-09-27 01:30:22
  • 提问者 taoy #2
    在网上查了一圈,没找到spring boot如何解耦slf4j,只能保留其jar包,然后全部使用log4j2的类与方法了。使用lombok的注解@Log4j2就可以在类文件中使用log4j2的类与方法了,这样是否可行?
    回复 有任何疑惑可以回复我~ 2017-09-27 09:28:00
  • 廖师兄 回复 提问者 taoy #3
    追求性能的话,log4j2确实优于logback。只不过,springboot内置的是logback, 足够用了的话,我是推荐logback的。你说的用法是可行的。
    回复 有任何疑惑可以回复我~ 2017-09-28 00:10:14
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信