Log4j2 ConsoleAppender没有应用PatternLayout

时间:2014-11-25 04:41:55

标签: java

我正在运行Tomcat 8.0.9并使用log4j2。我在控制台appender上定义了一个模式布局,设置为SYSTEM_OUT。布局模式类似于:

%d {yyyy-MM-dd}%m%n

但是当调用System.out.println时,不会应用模式。我是否应该期望该模式将应用于System.out.println?

2 个答案:

答案 0 :(得分:1)

  

我是否应该期望该模式将应用于System.out.println?

没有

模式(以及整个log4j配置)仅适用于log4j组件(即记录器,追加器,布局等)。 SYSTEM_OUT目标意味着ConsoleAppender将使用System.out预先格式化的日志消息打印到控制台。

因此要获得格式化的日志输出,必须使用log4j logger:

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

public class LoggingTest {
    private static final Logger log = LogManager.getLogger();

    public static void main(String[] args) {
        log.info("This text will be formatted");
        System.out.println("This won't");
    }
}

当然配置文件必须在类路径中,或者" log4j.configurationFile"系统属性指定。

答案 1 :(得分:-1)

请尝试: log4j.appender.stdout.layout.ConversionPattern =%d {yyyy-MM-dd HH:mm:ss}%-5p%c {1}:%L - %m%n

它对我有用。