2014-02-26 72 views
2

目標:我的應用程序應該有ERROR和DEBUG級別的消息。日誌級別必須通過JBoss管理控制檯進行設置(切換)。應該將日誌寫入標準的JBoss日誌文件和服務器控制檯。在JBoss 7.1.1中記錄DEBUG級別

我試圖使用java.util.logging.Logger,但是這個記錄器沒有必要的級別。 我用slf4j切換到log4j。帶有ERROR級別的消息存在。問題與DEBUG和System.out.println。有趣的是,DEBUG級別在測試階段是可見的。

import org.slf4j.Logger; 
    import org.slf4j.LoggerFactory; 
    /** 
    * Logger creation and configuration 
    */ 
    public class ResourcesLog { 

     @Produces 
     Logger getLog(InjectionPoint ip) { 
      String category = ip.getMember().getDeclaringClass().getName(); 
      return LoggerFactory.getLogger(category); 
     } 
    } 

或只是LOG = LoggerFactory.getLogger(MyClass.class); Pom file:

<dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.7.6</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.7.6</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.7.6</version> 

     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>1.7.6</version> 
     </dependency> 

也許包含不必要的。我無法將slf4j-simple和slf4j-api設置爲「提供」 - 出現錯誤。這個庫應該在戰爭中嗎?

JBoss的部署,structure.xml在WEB-INF:在資源文件夾

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure> 
    <deployment> 
     <exclusions> 
      <module name="org.apache.commons.logging" /> 
      <module name="org.apache.log4j" /> 
      <module name="org.jboss.logging" /> 
      <module name="org.jboss.logging.jul-to-slf4j-stub" /> 
      <module name="org.jboss.logmanager" /> 
      <module name="org.jboss.logmanager.log4j" /> 
      <module name="org.slf4j" /> 
      <module name="org.slf4j.impl" /> 
     </exclusions> 
    </deployment> 
</jboss-deployment-structure> 

而且log4j.xml文件設置(在戰爭中是 'WEB-INF /班/ log4j.xml文件'):

<?xml version="1.0" encoding="UTF-8"?> 
     <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> 
    <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender"> 
     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> 
     <param name="File" value="${jboss.server.log.dir}/server.log"/> 
     <param name="Append" value="true"/> 
     <param name="DatePattern" value="'.'yyyy-MM-dd"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> 
     </layout> 
    </appender> 
    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> 
     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> 
     <param name="Target" value="System.out"/> 
     <param name="Threshold" value="DEBUG"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/> 
     </layout> 
    </appender> 
    <category name="org.mypackage"> 
     <priority value="DEBUG"/> 
    </category> 
    <root> 
     <level value="INFO"/> 
     <appender-ref ref="CONSOLE"/> 
     <appender-ref ref="FILE"/> 
    </root> 
</log4j:configuration> 
+0

同樣在JBoss Admin Console中,我在「Logging Categories」中有設置: – Olga

+0

,名稱爲「org.mypackage」級別「DEBUG」的類別 – Olga

+0

我發現解決方案在JBoss Admin控制檯的控制檯處理程序中拋出更改日誌級別。但它適用於所有包,我只想設置爲「org.mypackage」。有任何想法嗎? – Olga

回答

2

由於您希望您的日誌轉到標準日誌記錄配置,並且您想通過管理選項控制此配置,因此不需要使用log4j。溝log4j.xmljboss-deployment-structure.xml。你也只需要slf4j-api,它需要被標記爲提供。

接下來你需要在服務器上配置一個記錄器。在CLI這將是一個命令像一個獨立的服務器

/subsystem=logging/logger=org.mypackage:add(level=DEBUG) 

你想也需要設置控制檯處理程序和文件處理程序,以允許調試消息如下。默認情況下,文件處理程序已經設置爲打印調試消息。要更改控制檯處理程序以允許執行以下CLI命令的調試消息。

/subsystem=logging/console-handler=CONSOLE:write-attribute(name=level,value=DEBUG) 

這些更改也可以在Web控制檯中進行。

相關問題