2017-02-17 41 views
1

有人曾试图使用默认内置的slf4j与Tapestry 5.4中的log4j2吗? 我可以这样使用log4j2:Tapestry 5 + log4j2

import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 
...  
private Logger logger = LogManager.getLogger(this.getClass()); 

但我不能这样使用:

import org.apache.tapestry5.ioc.annotations.Inject; 
import org.slf4j.Logger; 
... 
@Inject private Logger logger; 

我不明白为什么,因为我觉得,我加入到我的gradle这个脚本所需的 库:

runtime group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.8' 
runtime group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.8' 
runtime group: 'org.apache.logging.log4j', name: 'log4j-web', version: '2.8' 
runtime group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.8' 

有没有人有任何想法,为什么它不适合我?

在此先感谢!

+0

有什么错误?你怎么知道它不起作用? –

+1

嗨! 感谢您的回复。问题是在log4j2.xml中设置了最低级别DEBUG,但是如果使用注入版本,只能登录info级别,但是如果我使用这个'private Logger logger = LogManager.getLogger(this.getClass());'然后DEBUG级别开启。 无论如何,我的同事帮助我,我要回答解决方案。 :) – LakiGeri

回答

1

我被扶出来,我发现了一个解决方案,我不得不改变gradle这个文件到这一点:

compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.8' 
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.8' 
compile group: 'org.apache.logging.log4j', name: 'log4j-web', version: '2.8' 
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.8'