如何将所有日志从hibernate和spring重定向到log4j2?

Posted

技术标签:

【中文标题】如何将所有日志从hibernate和spring重定向到log4j2?【英文标题】:How to redirect all logs from hibernate and spring to log4j2? 【发布时间】:2014-04-11 19:40:58 【问题描述】:

我使用下一个技术堆栈构建我的“superWebApp”:

persistence provider - Hibernate 4.x
webMvc and beans container - Spring 4.x
web containter - Tomcat 7.5.x

我的任务是将所有日志写入数据库。单独为每个日志框架做这件事会很痛苦。这就是为什么我需要将所有日志重定向到单个框架,然后使用 DBAppender 不会有问题。

我在考虑 log4j2,因为我用它在“superWebApp”中写日志。那么有什么想法 (也可以重定向 tomcat 日志)?

如果不可能,也许还有另一个日志框架可以作为中心?

【问题讨论】:

【参考方案1】:

这对我来说非常有效:

<properties>
    <logger.version>2.0-rc1</logger.version>
</properties>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>$logger.version</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>$logger.version</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-1.2-api</artifactId>
        <version>$logger.version</version>
    </dependency>
    <dependency>
    <!--HIBERNATE-SPRING - LOGGER (log4j)-->
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.6</version>
    </dependency>

【讨论】:

log4j-1.2-api 是我所缺少的!另一个答案***.com/questions/16341020/…【参考方案2】:

来自Logging Spring using Log4j2,我们必须使用log4j-slf4j-impl。

我已经用 Spring 4 和 struts 2 测试过它,它工作正常。

<log4j2.version>2.1</log4j2.version>

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>$log4j2.version</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>$log4j2.version</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>$log4j2.version</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>$log4j2.version</version>
</dependency>

【讨论】:

在花费大量时间尝试将 Spring 的 INFO 消息记录到控制台之后,这是唯一有效的答案。

以上是关于如何将所有日志从hibernate和spring重定向到log4j2?的主要内容,如果未能解决你的问题,请参考以下文章

基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)

如何使用 Hibernate、Spring MVC 将数据从单个表单发送到多个数据库表

如何使用 Spring Security 将登录的用户重定向到他的首页,将未登录的用户重定向到不同的用户

使用 Spring Security 登录后重定向到不同的页面

对使用 Spring 和 Hibernate 的 Java 日志系统感到困惑

使用spring security进行身份验证后如何根据角色进行重定向[重复]