迁移到Struts 2.5.16导致log4问题

时间:2018-04-20 19:46:39

标签: java tomcat struts2 log4j2

我正在将现有的Struts应用程序2.3.34迁移到2.5.16。 我已经使用升级所需的最小分布的所有库更新了我的项目。 在Server(Tomcat 8.5)启动时,我在控制台中看到ERROR: 错误StatusLogger Log4j2找不到日志记录实现。请将log4j-core添加到类路径中。使用SimpleLogger登录控制台...... 看起来他们缺少log4j-core lib吗? 如果有人遇到过类似的问题,或者我遗漏了什么,请告诉我。

谢谢!

2 个答案:

答案 0 :(得分:0)

最新版本的struts 2(V2.5.16)使用log4j2 jar。您可以参考here了解更多详情。如果您的webapp中已经有log4j2,请尝试将其更新为latest version

答案 1 :(得分:0)

我遇到了这个问题。由于struts 2.5.16使用log4j2,因此我们必须将其添加到类路径中。一旦将其添加到项目中,因为有了log4j.xml文件,所以我没有得到struts日志。

所以我开始迁移应用程序日志和休眠日志,但是在某些时候它不起作用。

简单的解决方法是将整个项目迁移到log4j2 使用log4j-to-slf4j适配器jar,这将使您的struts模块可以与现有slf4j实现一起使用。我做了以下pom更改:

<dependency>
        <!--Defining not to use the log4j-api -->
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>${struts.ver}</version>
        <exclusions>
            <exclusion>
                <artifactId>org.apache.commons</artifactId>
                <groupId>commons-lang3</groupId>
            </exclusion>
            <exclusion>
                <artifactId>log4j-api</artifactId>
                <groupId>org.apache.logging.log4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency> <!-- Redirecting from log4j2 to slf4j -->
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-to-slf4j</artifactId>
        <version>2.10.0</version>
    </dependency>

请参阅this page中的“ log4j-slf4j适配器jar”