Log4j 2记录输出消息,并链接到文件号

5us2dqdw  于 2023-10-18  发布在  其他
关注(0)|答案(2)|浏览(93)

以前我使用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中添加链接?

njthzxwz

njthzxwz1#

IntelliJ控制台中的链接模式似乎是“class(file:line)"。
您可以尝试将模式设置为:
%d{yyyy-MM-dd HH:mm:ss} %突出显示{%-5 p} %c{1}:%C(%F:%L)- %m%n

mec1mxoz

mec1mxoz2#

在Log4j1中,%l意味着“位置”,所以如果你有%level,你会得到记录器的位置+级别。
在Log4j2中,location已更改为%c,它输出记录器的名称(如果您使用LoggerFactory.getLogger(Foo.class)正确示例化记录器,则为类名,其中foo是您的类名。
%level打印日志级别,因此您需要在PatternLayout配置中将其更改为%c,以获得与使用Log4j1时相同的输出:

<PatternLayout pattern="%d{HH:mm:ss.SSS} [%thread] %c %-5level Line: %L  - %msg%n"/>

查看log4j2文档中的布局页面,并向下滚动到PatternLayout以了解更多https://logging.apache.org/log4j/2.x/manual/layouts.html

相关问题