如何配置 log4j2.xml 从文件到标准输出?

How to configure log4j2.xml from file to stdout?

这是我当前的 log4j2.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info">
<Properties>
    <Property name="logFilename">abc</Property>
    <Property name="metricsLogFilename">abc-metrics</Property>
    <Property name="pattern">%d [%X{idreq} %X{iduser} %X{codeenv}] %-5p
        [%c{1}] : %m%n</Property>
    <Property name="metricsPattern">%d : %m%n</Property>
    <Property name="level">${sys:LOG4J_LEVEL:-info}</Property>
</Properties>
<Appenders>
    <Console name="console" target="SYSTEM_OUT" follow="true"  >
    <PatternLayout pattern="${pattern}" />
    </Console>
    <RollingRandomAccessFile name="file"
        fileName="${tex:appLogFilePath}${logFilename}.log"
        filePattern="${tex:appLogFilePath}${logFilename}-%i.log.gz">
        <PatternLayout pattern="${pattern}" />
        <Policies>
            <SizeBasedTriggeringPolicy size="10MB" />
        </Policies>
        <DefaultRolloverStrategy max="1" />
    </RollingRandomAccessFile>
    <RollingRandomAccessFile name="metricsFile"
        fileName="${tex:appLogFilePath}${metricsLogFilename}.log"
        filePattern="${tex:appLogFilePath}${metricsLogFilename}-%i.log.gz"
        immediateFlush="false">
        <PatternLayout pattern="${metricsPattern}" />
        <Policies>
            <SizeBasedTriggeringPolicy size="10MB" />
        </Policies>
        <DefaultRolloverStrategy max="1" />
    </RollingRandomAccessFile>
</Appenders>
<Loggers>
    <Logger name="com.myClass.common" level="info" additivity="false">
        <AppenderRef ref="console" />
        <AppenderRef ref="file" />
    </Logger>
        <Logger name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" level="${level}" additivity="false">
        <AppenderRef ref="console" />
        <AppenderRef ref="file" />
    </Logger>
    <Logger name="metrics" level="info" additivity="false">
        <AppenderRef ref="metricsFile" />
    </Logger>
    <Root level="${level}">
        <AppenderRef ref="console" />
        <AppenderRef ref="file" />
    </Root>
</Loggers>

我想切换到 stdout 而不是文件日志。我应该改变什么? (我从未使用过 log4j)

我想要它 stdout 的原因是因为我需要在 heroku 上部署我的应用程序,而在 heroku 上我们需要使用系统输出日志记录。

根据当前配置,除了指标,您在两个地方记录 - 在文件中以及在控制台上。对于指标,您仅登录文件。

如果您只想在控制台记录,请从记录器配置中删除其他附加程序及其引用。对于指标,您必须参考控制台附加程序。

更新文件可能看起来像 -

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info">
<Properties>
    <Property name="pattern">%d [%X{idreq} %X{iduser} %X{codeenv}] %-5p
        [%c{1}] : %m%n</Property>
    <Property name="level">${sys:LOG4J_LEVEL:-info}</Property>
</Properties>
<Appenders>
    <Console name="console" target="SYSTEM_OUT" follow="true"  >
        <PatternLayout pattern="${pattern}" />
    </Console>
</Appenders>
<Loggers>
    <Logger name="com.myClass.common" level="info" additivity="false">
        <AppenderRef ref="console" />
    </Logger>
        <Logger name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" level="${level}" additivity="false">
        <AppenderRef ref="console" />
    </Logger>
    <Logger name="metrics" level="info" additivity="false">
        <AppenderRef ref="console" />
    </Logger>
    <Root level="${level}">
        <AppenderRef ref="console" />
    </Root>
</Loggers>