![](/img/trans.png)
[英]log4J2 to slf4j to log4j1 produces “No log4j2 configuration file found”
[英]Adapting log4j1 configuration to log4j2
我有一個使用 log4j 版本 1 的 java 應用程序,我想遷移到 log4j2。 配置屬性保持不變:
log4j.rootLogger=INFO,FILE,console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %l - %m%n
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File=${jboss.server.log.dir}/application/application.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d{dd-MM-yyyy HH:mm:ss} %l - %m%n
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
這是我正在編碼的 xml 配置:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="ConsoleAppender" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5p] %d{yyyy-MM-dd HH:mm:ss} %l - %m%n" />
</Console>
<RollingFile name="DailyLog"
fileName="${env:JBOSS_HOME}/standalone/log/application/application.log"
filePattern="${env:JBOSS_HOME}/standalone/log/application/application.log.%d{yyyy-MM-dd}">
<PatternLayout pattern="[%-5p] %d{dd-MM-yyyy HH:mm:ss} %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="ConsoleAppender" />
<AppenderRef ref="DailyLog"/>
</Root>
</Loggers>
</Configuration>
創建的日志文件應該是:
application.log.2022-06-05
application.log.2022-06-06
application.log (Today, June 7th)
Log4j2 版本:2.17.1
目標是第二種配置等同於第一種配置。
問題:你認為xml配置等同於配置屬性嗎? 或者有什么遺漏嗎?
發布更新:
發布更新后,它可以工作。
TL;DR:刪除名為FileAppender
的附加程序。
您的配置中的主要問題是您有兩個附加到同一個文件的附加程序: ${env:JBOSS_HOME}/standalone/log/application/application.log
。 Log4j2僅在兩個附加程序屬於同一類型時才允許這樣的配置(即FileAppender
或RollingFileAppender
):在這種情況下,兩個附加程序將共享一個文件管理器。 否則配置可能會失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.