spring和hibernate的日志配置

时间:2017-01-22 09:29:48

标签: java spring hibernate logging log4j2

目前,我正在与

合作
  • log4j 2.7;
  • springframework 4.3.5;
  • hibernate 5.2.3。

我通过xml文件配置log4j 为此,我创建了一些appender,其中一个名为" General"。 我需要的是所有日志必须转到那个appender(包括springframework或hibernate生成的那些),并且后者都没有打印在控制台上(我还需要其他类的其他日志)。
我尝试写这些记录器:

<Loggers>
    <Logger name="org" level="ALL" />
    <Root level="ALL" additivity="false">
        <AppenderRef ref="General"/>
    </Root>
    <Logger name="tests" level="ALL" additivity="false">
        <AppenderRef ref="console"/>
        <AppenderRef ref="General"/>
    </Logger>
</Loggers>

关键在于,虽然springframework的所有包都通过该appender正确记录,但springframework仍然在控制台上登录,并且不会通过&#34; General&#34;附加目的地。我该如何解决这个问题?

编辑:我发现这可能是因为springframework似乎使用其他库(logback,slf4j等)进行了日志记录。我还读到springboot可以配置为使用log4j,因为我还不太了解Spring及其库,我不知道如何得到我想要的结果。

2 个答案:

答案 0 :(得分:2)

当你定义org logger时,你需要在该记录器中传递appender ref 希望这会奏效。

<Logger name="org" level="ALL" >
 <AppenderRef ref="General"/>
</Logger>

Spring默认为Commons Logging库。您需要禁用它,而是使用lg4j库。 您需要排除commons-logging依赖项。

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.0.0.RELEASE</version>
        <scope>runtime</scope>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

您需要将Log4j放在类路径上,并在类路径的根目录中为其提供配置文件,即log4j.xml。 并在pom.xml中添加以下依赖项。

<dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
        <scope>runtime</scope>
    </dependency>

参考 - http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#overview-not-using-commons-logging

答案 1 :(得分:0)

最后,我最后只是在pom上添加了这些依赖项。

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.12</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jcl</artifactId>
        <version>2.7</version>
    </dependency>

并删除记录器

<Logger name="org" level="ALL" />