【问题标题】:JBoss AS 7 Log4j in webapplication not change log levelWeb应用程序中的JBoss AS 7 Log4j不更改日志级别
【发布时间】:2012-11-16 19:34:13
【问题描述】:

这是文件内容

类/log4j.properties

log4j.rootCategory=DEBUG, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n

# Enable web flow logging
log4j.category.org.springframework.webflow=DEBUG
log4j.category.org.springframework.faces=DEBUG
log4j.category.org.springframework.binding=DEBUG
log4j.category.org.springframework.transaction=DEBUG

pom.xml

<dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
       <version>1.2.17</version>
</dependency>
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>${org.springframework-version}</version>
   <exclusions>
           <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
           </exclusion>
   </exclusions>
</dependency>

对于每个包含 commons-logging 的依赖,SLF4j 是 make exclude。

WEB-INF/jboss-deployment-structure.xml

<jboss-deployment-structure>
    <deployment>        
        <exclusions>
             <module name="org.apache.log4j" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

当我在控制台上的 Eclipse 中启动服务器时,我仍然只能看到 INFO 日志和 WARN。我需要调试日志记录弹簧框架。这个配置有什么问题??

【问题讨论】:

    标签: spring logging jboss log4j jboss7.x


    【解决方案1】:

    没有什么很清楚的。似乎是 AS7 的一个错误

    要拥有应用特定的日志记录级别,您需要

    在您的应用程序中配置 WEB-INF/classes/logging.properties 或 log4j.properties 或 log4j.xml

    请参阅AS7-514 的 ondrej ziska 评论以获取详细信息

    【讨论】:

    • 在 jboss 7.1.1 Final 这个解决方案不起作用。明天我在 7.1.0 和 7.1.2 版本的 jboss 上试用它,这在 ondrej ziska 在他的帖子中提到的中间件博客文章中。
    • @BartekM 一条建议。使用 AS7 nightly builds,请点击此处最后一个成功的工件:ci.jboss.org/jenkins/job/JBoss-AS-7.x-latest,发布的 AS7.1.1 将不断进行大量错误修复。所以它是可取的。
    • 感谢您的建议。我从 Jenkins 下载了最新版本 - jboss-as-7.2.0.Alpha1-SNAPSHOT,然后我遇到了休眠问题。在这一刻,我在 jboss-as-web-7.0.2.Final 上运行我的应用程序,然后登录应用程序正常工作。
    • 太好了,日志记录已解决。什么样的休眠问题?我想应该是一些配置不匹配。
    • 当我在应用程序中仅配置 log4j 时,看起来日志记录已关闭。在控制台上仅从 JBoss 中抛出一些带有 INFO 级别的日志。因此,我添加了 META-INF/jboss-deployment-structure.xml 的结构,以在应用程序中获取 conf,然后在读取 persistence.xml 时得到log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a "org.apache.log4j.Appender" variablelog4j:ERROR Could not instantiate appender named "stdout"。所以我发现这可能是由 lof4j 的双库引起的。我到处只有一个库,并且模块被排除在部署之外。
    【解决方案2】:

    来自 JBoss wiki 页面上关于使用 log4j 配置应用程序的https://docs.jboss.org/author/display/AS71/How+To

    我在步骤 2 中看到,在部署的 lib/ 目录中包含 log4j.properties 或 log4j.xml 文件。

    您的 log4j.properties 位于 classes/ 目录中。您的 log4j 属性未正确获取(配置错误)或文档不正确。

    如果在 lib/ 目录下不起作用,则需要修复 jboss 文档。

    【讨论】:

    • lib/log4j.properties 不起作用,看起来应该修复 jboss 文档
    【解决方案3】:

    配置包含在 AS7 的日志子系统中,例如在 domain.xml 或 Standalone.xml 中,具体取决于配置文件和模式。

    您需要为org.spring添加一个日志类别,并增加控制台处理程序的日志级别阈值。

    <subsystem xmlns="urn:jboss:domain:logging:1.1">
      <console-handler name="CONSOLE">
        <level name="DEBUG"/>
        ...    
      </console-handler>
    
      ...
    
      <logger category="org.spring">
        <level name="DEBUG"/>
      </logger>
    
      ...
    </subsystem> 
    

    【讨论】:

    • 我知道在standalone.xml中定义logginig,还有logginig.properties,当logginig子系统没有在standalone.xml中定义时使用(假设我使用的是独立的jboss配置)。但问题是当我想在部署的应用程序上配置 logginig 时。我使用 jboss-deployment-structure.xml 包含在 WEB-INF 中,这个文件的任务是排除 jboss 模块。我今天发现 jboss 上的默认 logginig 模块是 org.jboss.as.logging,但是当我将它添加到排除项时没有任何反应。
    猜你喜欢
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多