【问题标题】:JBoss 7.3.0, Spring, slf4j implementation log4j logging not workingJBoss 7.3.0,Spring,slf4j 实现 log4j 日志记录不起作用
【发布时间】:2014-07-05 12:49:39
【问题描述】:

不确定我缺少什么,尝试在我的 JBoss Spring 应用程序中实现 Log4J 日志记录,如下所述: Hibernate logging in Spring application on JBoss 7.1

但它似乎并没有选择我在我定义的配置 webapp/WEB-INF/classes/log4j.properties

pom.xml:

     <properties>
         <org.slf4j-version>1.7.5</org.slf4j-version>
    </properties>
     <!-- Logging -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${org.slf4j-version}</version>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${org.slf4j-version}</version>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${org.slf4j-version}</version>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>

    <!-- Spring -->
       <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework-version}</version>
            <exclusions>
                <!-- Exclude Commons Logging in favor of SLF4j -->
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
         </dependency>

META-INF/jboss-deployment-structure.xml:

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

WEB-INF/classes/log4j.properties:

log4j.rootLogger=INFO, A1, R

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Target=System.out
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
log4j.logger.org.hibernate=DEBUG
log4j.logger.com.bagel=INFO

TestController.java:

package com.bagel.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Controller
public class TestController {

private final static Logger LOGGER = LoggerFactory.getLogger(TestController.class.getName());

  @RequestMapping("/test")
  public void test(){
    LOGGER.info("Test Logging");
  }

}

而且我确信我的 Controller 方法测试正在被调用,但是它没有记录所需的“测试记录”

【问题讨论】:

  • 如果您使用的是 slf4j,是否有理由使用 log4j?
  • 嗨 James SLF4J 只是一个界面。它需要在运行时进行底层实现,例如:java.util.logging、logback、log4j 等。这允许您在需要时切换实际实现。
  • 是的,这就是我问这个问题的原因 :) 服务器将为您处理日志配置,因此没有理由使用像 log4j 这样的额外日志管理器。
  • 即使在将记录器类别添加到standalone.xml 之后,服务器日志也没有显示任何内容。因此我认为我需要明确定义实现。
  • 不确定可能是什么,但我之前听说过 Spring 的问题。我不知道 Spring 做了什么来配置日志记录,但我认为它试图做一些事情。

标签: spring jboss7.x slf4j


【解决方案1】:

在我的情况下,我遵循了以下步骤,它对我有用:

  1. 在 JBOSS EAP7.x 模块中配置 log4j,如下图所示。

模块.xml

<module name="log4j" xmlns="urn:jboss:module:1.5">
    <properties>
        <property name="jboss.api" value="unsupported"/>
    </properties>

    <resources>
        <resource-root path="log4j-1.2.17.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.servlet.api" optional="true"/>
    </dependencies>
</module>
  1. 将jboss-deployment-structure.xml文件放在WEB-INF下

  1. 将log4j.properties文件放在src-->main-->resources下

  2. 构建项目并再次部署它应该像魅力一样工作!

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 2020-12-07
    • 2013-01-21
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多