以前我使用的是log4j版本1,其中有以下log4j.xml配置文件:-
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="info" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level Line: %L - %msg%n" />
</layout>
</appender>
<category name="com.ma.dev" additivity="false">
<priority value="INFO" /> <!-- <priority value="${myinfo}" /> -->
<appender-ref ref="STDOUT" />
<appender-ref ref="LOGFILE" />
</category>
<root>
<priority value="WARN" />
<appender-ref ref="UNMAPFILE" />
</root>
</log4j:configuration>
此配置生成以下日志输出,其中我已链接到日志记录行:-
我尝试使用以下配置文件来获取log4j版本2的类似日志输出:-
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="priorityLevel">info</Property>
</Properties>
<Appenders>
<Console name="myConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%thread] %-5level Line: %L - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="${priorityLevel}">
<AppenderRef ref="myConsole"/>
</Root>
</Loggers>
</Configuration>
我的输出为:-
没有链接。如何在Log4j版本2中获得链接?
在Log4j1中,%l
的意思是“位置”,因此,在有%level
的位置,您将获得记录器的位置+ evel。
在Log4j2中,位置已更改为%c
,它输出记录器的名称(如果您使用LoggerFactory.getLogger(Foo.class)
正确实例化记录器,则为类名,其中foo
是您的类名。
[%level
打印日志记录级别,因此您需要在PatternLayout配置中将其更改为%c
才能获得与使用Log4j1时相同的输出。
从log4j2文档中查看Layout页面,然后向下滚动到PatternLayout以获取更多https://logging.apache.org/log4j/2.x/manual/layouts.html