2014-08-31 80 views
0

我使用weld-se和log4j2作爲記錄器。但我無法從Weld得到任何東西。其他日誌工作正常。焊接SE不記錄log4j2

庫:

<dependency> 
     <groupId>org.jboss.weld.se</groupId> 
     <artifactId>weld-se-core</artifactId> 
     <version>2.2.4.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
     <version>2.0.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <version>2.0.2</version> 
    </dependency> 

log4j2.xml

<Configuration status="INFO"> 
    <Appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </Console> 
    </Appenders> 
    <Loggers> 
     <logger name="org.jboss.weld.level" level="debug"/> 
     <Root level="debug"> 
      <AppenderRef ref="Console"/> 
     </Root> 
    </Loggers> 
</Configuration> 

謝謝你的建議。

回答

3

嘗試使用SLF4J實施Log4j的2:

<dependency> 
    <groupId>org.jboss.weld.se</groupId> 
    <artifactId>weld-se-core</artifactId> 
    <version>2.2.4.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-core</artifactId> 
    <version>2.0.2</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-slf4j-impl</artifactId> 
    <version>2.0.2</version> 
</dependency> 

JBoss的焊接使用類org.jboss.logging.LoggerProviders爲找到一個記錄供應商。如果你看到這個類的code,你會看到這個系統屬性,org.jboss.logging.provider

您可以添加到jvm參數或者您可以模擬它。例如:

public class App { 

    static { 
     System.setProperty("org.jboss.logging.provider", "slf4j"); 
    } 

    public static void main(String[] args) { 
     Weld weld = new Weld(); 
     WeldContainer container = weld.initialize(); 
     // Do something 
     weld.shutdown(); 
    } 

} 
+0

謝謝你的回答 – enkor 2014-09-01 22:29:53