2014-02-26 39 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控制台中进行。

相关问题