当前位置: 首页 > 知识库问答 >
问题:

ERROR StatusLogger未找到log4j2配置文件。同时更新Struts的2.5.12版本

谯皓君
2023-03-14

根据要求,出于安全目的,我正在更新Struts项目。以前Struts版本是2.3.24,现在我将它更新为2.5.12。我已经下载了Struts所需的所有jar文件并应用到项目中,但我得到了以下错误

ERROR StatusLogger未找到log4j2配置文件。使用默认配置:仅将错误记录到控制台。将系统属性org.apache.logging.log4j.simplelog.StatusLogger.level设置为TRACE,以显示Log4j2内部初始化日志记录。

但是我没有在我的项目中使用任何记录器。我已经添加了所有的依赖jar文件,我没有使用Maven,而是在lib文件夹中添加了相关的库。任何建议请。

共有2个答案

钱星辰
2023-03-14

未找到log4j2配置文件表示log4j2。xml配置文件不在类路径中。

检查您的项目jar是否包含log4j配置文件

否则,您可以在构建脚本中将log4j配置文件路径设置为系统属性。

<sysproperty key="log4j.configurationFile" value="file:///${basedir}/src/log4j2.xml" />

检查https://logging.apache.org/log4j/2.x/manual/configuration.html对于log4j配置

姜经武
2023-03-14

Struts框架使用的是日志框架log4j的第二个版本。

请注意,该框架现在使用Log4j2作为主要日志记录层,现有的旧日志记录层已被弃用,不久将被删除。Log4j2支持多种不同的日志实现,请查看文档了解更多详细信息。

需要文件log4j2.xml来引导日志框架。但是它在类路径中丢失了。Struts框架中也缺少它。

您应该找到一些log4j2。xml,即从struts showcase应用程序或阅读本教程中的步骤4如何创建struts 2 Web应用程序

为了查看引擎盖下发生了什么,本教程的示例应用程序使用log4j2。您需要将log4j2的依赖项节点添加到pom中:

波姆。xml log4j依赖节点

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.8.2</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.8.2</version>
</dependency>

同时使用log4j核心和log4j api,可以使用最新版本的Log4j2,而不会与框架提供的版本发生冲突。设置一个log4j2。src/main/resources文件夹中的xml配置,其中包含以下内容

log4j2。xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="com.opensymphony.xwork2" level="debug"/>
        <Logger name="org.apache.struts2" level="debug"/>
        <Root level="warn">
            <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
</Configuration>

请注意,上面的log4j2配置将控制台指定为日志目标。

 类似资料:
  • 我已经将其隔离到一个非常简单的测试项目中,该项目除了简单的log4j2test配置使用之外没有其他用途。文件目录结构: 建筑sbt: log4j2.xml内容复制/粘贴从示例在官方留档:https://logging.apache.org/log4j/2.x/manual/configuration.html SimpleMain。斯卡拉: 我跑步与 输出:

  • 最近,我决定学习如何使用log4j2记录器。我下载了所需的jar文件,创建了库,xml编译文件,并尝试使用它。不幸的是,我在console(Eclipse)中得到了这样的语句: 这是我的测试类代码: 和我的xml配置文件: 我还尝试使用不带标记的xml,以及包规范和各种文件夹/包目录,但没有帮助。现在我的文件直接位于Eclipse的project文件夹中。

  • 这是我的配置文件: 日志配置文件读起来非常清楚,因为它使用my/log目录中定义的模式正确地写入。 这是我在代码中实例化它的方式:

  • 我们添加了使用log4J 2的库。X,但我们仍在使用log4J 1。X(主要是因为我们有自己的一些应用程序和记录仪)。我被告知解决方案是发送log4J 2。x到slf4j(使用log4j-to-slf4j,版本2。X),然后slf4j到log4J 1。X,使用slf4j-log4j12,版本1。X. 这就是我刚才所做的,但我仍然得到以下信息: ERROR StatusLogger未找到log4j2

  • 我们已经添加了使用log4j2.x的库,但是我们仍然在使用log4j1.x(主要是因为我们有自己的一些附加程序和记录器的impl)。我被告知,解决方案是将log4j2.x发送到slf4j(使用log4j-to-slf4j,版本2.x),然后将slf4j发送到log4j1.x,使用slf4j-log4j12,版本1.x。 这就是我刚才所做的,但我仍然得到这样的信息: 我希望slf4j使用log4J

  • 问题内容: 在我的application.yml中,我得到了: 还有其他一些使用不同的配置文件。启动应用程序时,我得到以下信息: 如果我只是将log4j2.xml放在已分析的文件旁边,则它可以工作。所以我认为这是我错过依赖关系的原因,或者使用log4j2无法实现? 问题答案: 在我这边,我正在使用属性文件而不是Yaml文件。我需要两个日志文件:一个将所有内容记录到控制台,另一个用于记录文件。因此,