【问题标题】:log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment)log4j:警告找不到记录器的附加程序(org.springframework.core.env.StandardEnvironment)
【发布时间】:2018-03-18 10:50:47
【问题描述】:

我正在尝试使用 log4j2.xml instad 的 log4j 但我不断得到 ​​p>

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.

文件位于 src/main/resources 下

 <?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="WIP">
  <Appenders>
    <Console name="console" target="SYSTEM_OUT">
        <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %MDC{threadTrackId} %40c{1.} - %msg%n"/>
    </Console>
</Appenders>
<Loggers>
    <Root level="warn">
        <AppenderRef ref="console"/>
    </Root>
    <Logger name="com.test" level="debug"/>
    <Logger name="org.springframework" level="info"/>
</Loggers>
</Configuration>

我不确定文件的位置是否正确,但其中的附加程序未正确读取或文件未找到。

在我的 pom 文件中,我有以下依赖项

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </dependency>
<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-1.2-api</artifactId>
    </dependency>

这是我在 pom 中的构建部分

  <build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.4.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>com.wirecard.wip.db.RecreateDatabase</mainClass>
                <cleanupDaemonThreads>false</cleanupDaemonThreads>
            </configuration>
        </plugin>
    </plugins>
</build>

在我的课堂上,这是我初始化记录器的方式

private static final Logger LOG =   LoggerFactory.getLogger(MyClass.class);

我的进口是

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

我使用这个命令通过 maven 运行我的课程

mvn -B -f pom.xml exec:java -Dlog4j.configurationFile=log4j2.xml

我也试过了

mvn -B -f pom.xml exec:java -Dlog4j.configurationFile=classpath:log4j2.xml

感谢任何帮助

【问题讨论】:

  • 您是否尝试仅将 log4j2.xml 与实际旧的 log4j 库一起使用?您可能正在设置不正确的库依赖项。检查这个话题stackoverflow.com/questions/25386651/…
  • @AlexeyR。我已经试过了

标签: spring maven logging log4j log4j2


【解决方案1】:

如果您想从自定义位置引用 log4j.properties 文件,请同时在自定义位置创建日志文件,如果您正在使用:

  1. 弹簧靴
  2. log4j 版本 1.2+

你排除了

“spring-boot-starter-logging”

来自

“弹簧启动器”

然后在maven中这个依赖之后添加这个依赖

<dependency>
        <groupId>log4j</groupId>
        <artifactId>apache-log4j-extras</artifactId>
        <version>1.2.17</version>
    </dependency>

进行干净的构建。

它将从自定义位置引用文件并创建日志文件。 希望这会对某人有所帮助。

【讨论】:

    【解决方案2】:

    消息

    log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
    log4j:WARN Please initialize the log4j system properly.
    

    来自 log4j1。您的类路径中必须仍然有 jar。运行“mvn dependency:tree”,看看是什么引入了它,然后为它添加一个排除项。

    【讨论】:

    • 是的,确实是这个问题,我几天前就想通了,但是忘记发布答案了,谢谢你的帮助
    • 我也遇到了同样的问题,我的类路径中有一个指向 log4j1 的 jar。我追踪了那个罐子,发现它间接来自另一个罐子。排除那个内罐并再次建造。现在它正在工作。谢谢。
    猜你喜欢
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2012-09-13
    • 1970-01-01
    相关资源
    最近更新 更多