如何将错误,信息和跟踪报告分别保存在三个不同的文件中?我使用log4j2

时间:2016-06-16 12:56:00

标签: log4j log4j2

请不要低估,看看我的问题并帮助我解决这个问题。

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class NewClass {
    private static final Logger logger = LogManager.getLogger(NewClass.class);

    public static void main(final String... args) {

        // Set up a simple configuration that logs on the console.
        logger.info("in info");
        logger.trace("Entering application.");
        Hello bar = new Hello();
        if (!bar.doIt()) {
             logger.error("Didn't do it.");
        }
        logger.trace("Exiting application.");
    }
}


import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Hello {
    static final Logger logger = LogManager.getLogger(Hello.class.getName());

    public boolean doIt() {
        logger.entry();
        logger.error("Did it again!");
        return logger.exit(false);
    }
}

配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
    <Root level="info">
      <AppenderRef ref="Console"/>
    </Root>
    <Root level="trace">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

就像在这里我能够在控制台上打印所有内容但我不确定如何将记录附加到文件夹中的三个不同文件中以获取错误,信息和跟踪。我不知道如何为它编码。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我有一个完整的例子here,有点不同的情况。 您的情况更加简单:您应该为每个所需的日志定义专用的文件追加器。每个appender都应该有一个不同的名称和阈值过滤器来过滤相关的消息。 例如,对于错误消息:

<RollingFile name="ErrorsLog" fileName="${errLogDir}/${errLogFile}.log"
        filePattern="${errLogDir}/${errLogFile}-%d{dd-MM-yyyy}.log">
        <Filters>
            <ThresholdFilter level="error"/>
        </Filters>
        <PatternLayout> 
            <pattern>
                %d{EEE, dd MMM yyyy HH':'mm':'ss } %m%n
            </pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy/>
        </Policies>
        <DefaultRolloverStrategy max="30"/>
</RollingFile>