简体   繁体   English

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

[英]How to configure log4j2.xml from file to stdout?

Here is my current log4j2.xml file :这是我当前的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>

I want to switch to stdout instead of file logs.我想切换到stdout而不是文件日志。 What should I change ?我应该改变什么? (I've never used log4j) (我从未使用过 log4j)

The reason why I want to have it stdout is because I'll need to deploy my app on heroku, and on heroku we need to use system out logging.我想要标准输出的原因是我需要在 heroku 上部署我的应用程序,而在 heroku 上我们需要使用系统输出日志。

As per current configuration, except metrics, your are logging at both places - in a file as well as on console.根据当前配置,除指标外,您都在两个位置进行日志记录 - 在文件中以及在控制台上。 For metrices, you are logging in file only.对于指标,您仅登录文件。

If you can want to log only at console, remove other appender and their references from logger configuration.如果您只想在控制台记录日志,请从记录器配置中删除其他 appender 及其引用。 For metrices, you have to refer console appender.对于指标,您必须参考控制台附加程序。

Update file may look like -更新文件可能看起来像 -

<?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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM