gpt4 book ai didi

java - log4j2.xml 虚拟机选项 "No log4j2 configuration file found"

转载 作者:行者123 更新时间:2023-11-30 02:51:59 25 4
gpt4 key购买 nike

我已经使用 log4j2 有一段时间了,并且在类路径中它工作得很好。但现在我决定使用 -Dlog4j.configuration= 将其移至 VM options,这是一场灾难。有大量的警告,最后它给了我一个错误:找不到 log4j2 配置文件。

将其移出项目并在 IDEA 中使用 VM 选项注入(inject) log4j2.xml 后发生了什么变化?

log4j:WARN Continuable parsing error 2 and column 30
log4j:WARN Document root element "configuration", must match DOCTYPE root "null".
log4j:WARN Continuable parsing error 2 and column 30
log4j:WARN Document is invalid: no grammar found.
log4j:WARN The <configuration> element has been deprecated.
log4j:WARN Use the <log4j:configuration> element instead.
log4j:WARN Unrecognized element appenders
log4j:WARN Unrecognized element Loggers
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>

<File name="File" fileName="logs/error.log"
immediateFlush="true" append="true">
<PatternLayout pattern=" \n\n %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>

<RandomAccessFile name="File" fileName="logs/journal.log" immediateFlush="true" append="true">
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %msg%n"/>
</RandomAccessFile>

<File name="JournalJSON" fileName="logs/journalJSON.log" immediateFlush="true" append="false">
<JSONLayout complete="true" charset="UTF-8" compact="false" eventEol="false"/>
</File>

</appenders>

<Loggers>

<Logger name="com.ottercoder.controller" level="error" additivity="false">
<AppenderRef ref="Error" level="error"/>
<AppenderRef ref="Console" level="error"/>
</Logger>

<Logger name="com.ottercoder.service" level="info" additivity="false">
<appender-ref ref="JournalJSON" level="info"/>
<appender-ref ref="Journal" level="info"/>
<appender-ref ref="Console" level="info"/>
</Logger>

<Root level="warn">
<AppenderRef ref="Console"/>
</Root>
</Loggers>


</configuration>

最佳答案

-Dlog4j.configuration 是 Log4j 1.2 属性。在 Log4j 2 中,您可以使用 -Dlog4j.configurationFile 属性指定配置文件的位置。

log4j:WARN 输出行由 Log4j-1.2 生成。不是很好。请确保 log4j-1.2.x.jar 已从类路径中删除。 (使用 log4j-1.2-api 适配器将使用 Log4j 1.2 API 的调用路由到 Log4j 2 实现。)

有一个 Log4j 2 状态记录器警告:ERROR StatusLogger 未找到 log4j2 配置文件。使用默认配置:仅将错误记录到控制台:如果未指定log4j.configurationFile,Log4j 2 会尝试在类路径中查找配置文件。如果没有找到,它将打印此错误。您可以通过将配置文件移动到类路径中的目录或使用 -Dlog4j.configurationFile 属性指定配置文件的位置来解决此问题。

最后关于配置,com.ottercoder.service Logger 有一个“Journal”AppenderRef,但 Appenders 部分中没有定义具有该名称的 Appender。类似地,com.ottercoder.controller Logger 引用了一个不存在的“Error”附加程序。就影响而言,Log4j 2 将打印警告,但会忽略此警告。

关于java - log4j2.xml 虚拟机选项 "No log4j2 configuration file found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38369594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com