Jsf logback的问题
这个线程解决了我在WARJSF2项目中的问题,但是当项目被EAR启动时,这个解决方案就不起作用了 我正在使用JBoss7.1 更新: 我在EclipseJBossTools和JBoss7.1运行时中创建了一个新的JSF项目。添加jars slf4j-api-1.7.5.jar、logback-core-1.0.13.jar、logback-classic-1.0.13.jar和logback-access-1.0.13.jar bean中的以下代码:Jsf logback的问题,jsf,jboss7.x,logback,ear,Jsf,Jboss7.x,Logback,Ear,这个线程解决了我在WARJSF2项目中的问题,但是当项目被EAR启动时,这个解决方案就不起作用了 我正在使用JBoss7.1 更新: 我在EclipseJBossTools和JBoss7.1运行时中创建了一个新的JSF项目。添加jars slf4j-api-1.7.5.jar、logback-core-1.0.13.jar、logback-classic-1.0.13.jar和logback-access-1.0.13.jar bean中的以下代码: @Named public class Be
@Named
public class BeanTeste {
private Logger log = LoggerFactory.getLogger(BeanTeste.class);
public void executar(){
log.debug("TESTE DE DEBUG");
log.info("TESTE DE INFO");
log.warn("TESTE DE WARN");
// print internal state
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);
System.out.println("METODO COMPLETADO!");
}
应返回:
18:00:09,278 INFO [stdout] (http--0.0.0.0-8080-1) 18:00:09.274 [http--0.0.0.0-8080-1] DEBUG com.br.teste.BeanTeste - TESTE DE DEBUG
18:00:09,280 INFO [stdout] (http--0.0.0.0-8080-1) 18:00:09.279 [http--0.0.0.0-8080-1] INFO com.br.teste.BeanTeste - TESTE DE INFO
18:00:09,282 INFO [stdout] (http--0.0.0.0-8080-1) 18:00:09.282 [http--0.0.0.0-8080-1] WARN com.br.teste.BeanTeste - TESTE DE WARN
18:00:09,284 INFO [stdout] (http--0.0.0.0-8080-1) 18:00:09,223 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
18:00:09,286 INFO [stdout] (http--0.0.0.0-8080-1) 18:00:09,224 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
18:00:09,288 INFO [stdout] (http--0.0.0.0-8080-1) 18:00:09,224 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
18:00:09,291 INFO [stdout] (http--0.0.0.0-8080-1) 18:00:09,225 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default configuration.
18:00:09,293 INFO [stdout] (http--0.0.0.0-8080-1)
18:00:09,293 INFO [stdout] (http--0.0.0.0-8080-1) METODO COMPLETADO!
但是回来
Exception starting filter WicketFilter: java.lang.ClassCastException: ch.qos.logback.classic.LoggerContext cannot be cast to ch.qos.logback.classic.LoggerContext
在一个WAR项目中,我创建了一个jboss-deployment-structure.xml文件,并将其放在WEB-INF目录中,解决了我的问题
<jboss-deployment-structure>
<deployment>
<!-- Exclusions allow you to prevent the server from automatically adding some dependencies -->
<exclusions>
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
</exclusions>
</deployment>
</jboss-deployment-structure>
当WAR项目是addear项目时,问题又出现了
有什么想法吗?我用下面的内容更改了我的jboss-deployment-structure.xml,它成功了
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<ear-subdeployments-isolated>true</ear-subdeployments-isolated>
<deployment>
<exclusions>
<module name="org.apache.log4j" />
<module name="org.slf4j" />
<module name="org.slf4j.ext" />
<module name="org.slf4j.impl" />
<module name="org.slf4j.jcl-over-slf4j" />
<module name="org.apache.commons.logging" />
<module name="org.jboss.logging"/>
<module name="org.jboss.logging.jul-to-slf4j-stub"/>
<module name="org.jboss.logmanager"/>
<module name="org.jboss.log4j.logmanager"/>
<module name="org.apache.log4j"/>
<module name="org.log4j"/>
</exclusions>
<dependencies>
</dependencies>
</deployment>
<sub-deployment name="Teste.war">
<exclusions>
<module name="org.apache.log4j" />
<module name="org.slf4j" />
<module name="org.slf4j.ext" />
<module name="org.slf4j.impl" />
<module name="org.slf4j.jcl-over-slf4j" />
<module name="org.apache.commons.logging" />
<module name="org.jboss.logging"/>
<module name="org.jboss.logging.jul-to-slf4j-stub"/>
<module name="org.jboss.logmanager"/>
<module name="org.jboss.log4j.logmanager"/>
<module name="org.apache.log4j"/>
<module name="org.log4j"/>
</exclusions>
</sub-deployment>
<sub-deployment name="TesteEJB.jar">
<exclusions>
<module name="org.apache.log4j" />
<module name="org.slf4j" />
<module name="org.slf4j.ext" />
<module name="org.slf4j.impl" />
<module name="org.slf4j.jcl-over-slf4j" />
<module name="org.apache.commons.logging" />
<module name="org.jboss.logging"/>
<module name="org.jboss.logging.jul-to-slf4j-stub"/>
<module name="org.jboss.logmanager"/>
<module name="org.jboss.log4j.logmanager"/>
<module name="org.apache.log4j"/>
<module name="org.log4j"/>
</exclusions>
</sub-deployment>
非常感谢 为什么这个解决方案不适合您?发生了什么?当项目是简单WAR时,将文件jboss-deployment-structure.xml放在WEB-INF目录中解决错误:异常启动筛选器WicketFilter:java.lang.ClassCastException:ch.qos.logback.classic.LoggerContext无法强制转换为ch.qos.logback.classic.LoggerContext。但是,当WAR项目是EAR项目时,如果您能在问题中添加这些信息,那就太好了。没有任何格式是很难理解的。这一行为可能会鼓励人们阅读你的问题和答案。如果您发布您认为需要调整的代码片段,那就更好了。不同的类加载器已经加载了重复的logback jar。删除重复项以解决问题。我搜索了一些,但没有找到重复的jar。可能是JBOSS加载的。在这种情况下,如何找到答案?