${sys:logger.out.type}在Log4j 2中的含义是什么?

gpnt7bae  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(193)

我目前正在整理我们的一个内部工具的日志。我偶然发现在log4j2.xml中的Logger s内部使用${sys:logger.out.type}
下面是log4j2.xml文件的副本:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
    <Appenders>
        <Console name="stdout" target="SYSTEM_OUT">..
            <PatternLayout pattern="..."/>
        </Console>
        
        <RollingFile name="FILE" fileName="${sys:microservice.log}" filePattern="${sys:microservice.log}.%i">
            <PatternLayout>
                <Pattern>...</Pattern>
            </PatternLayout>
            <Policies>
                <OnStartupTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="300 MB" />
            </Policies>
            <DefaultRolloverStrategy max="5" />
        </RollingFile>
    </Appenders>

    <Loggers>
        <Logger name="org.springframework" level="warn" additivity="false">
            <appender-ref ref="${sys:logger.out.type}"/>
        </Logger>
        <Logger name="org.springframework.jdbc.core" level="off" additivity="false">
            <appender-ref ref="${sys:logger.out.type}"/>
        </Logger>
        <Logger name="org.springframework.jdbc.core.StatementCreatorUtils" level="off" additivity="false">
            <appender-ref ref="${sys:logger.out.type}"/>
        </Logger>
        <Logger name="com.myOrgName" level="trace" additivity="false">
            <appender-ref ref="${sys:logger.out.type}"/>
        </Logger>
        <Root level="info" additivity="false">
            <appender-ref ref="${sys:logger.out.type}"/>
        </Root>
    </Loggers>
</configuration>

在我前面的StackOverflow问题中,一个非常友好的用户将我重定向到Log4j属性替换页面,以便更好地理解${sys:logger.out.type}的语义。
在阅读了文档之后,我理解了sys前缀是指一个系统属性,但是不太理解logger.out.type的意思是什么?
这里插一句,它是指Logger的输出类型吗?这可能意味着它是指名为stdoutConsole元素吗?
感谢来自社区的任何见解和反馈。如果我的理解有任何错误,请纠正我,我也在学习:)谢谢!

z2acfund

z2acfund1#

log4j 2.x配置文件中类似${sys:logger.out.type}的属性解析为Java系统属性logger.out.type的值。
在调用java命令时,通过将命令行参数-Dlogger.out.type=stdout(或更一般的-D<property name>=<value>)传递给JVM来设置系统属性。
您还可以提供默认值,这样,如果没有为该系统属性设置值,${sys:logger.out.type:-FILE}将选择您的FILE附加器。

相关问题