使用log4j2将System.out输出到文件

6

是否可能像“旧版”log4j一样,直接将System.out(OutputStream)写入日志文件?

我只找到了针对log4j而非log4j2的解决方案。

感谢任何帮助!

2个回答

6

使用 log4j2-iostreams 模块非常容易。 假设我们想将所有来自 System.out 的消息发送到名称为 system.out,日志级别为 INFO 的记录器中:

System.setOut(
        IoBuilder.forLogger(LogManager.getLogger("system.out"))
                .setLevel(Level.INFO)
                .buildPrintStream()
);
System.out.println("Lorem ipsum");

使用以下 log4j2.properties 配置文件:

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d [%p] %c - %m%n

rootLogger.level = info
rootLogger.appenderRef.stdout.ref = STDOUT

我们应该在控制台中看到以下输出:
2017-10-28 12:38:22,623 [INFO] system.out - Lorem ipsum

3
我在处理Maven依赖和包含时遇到了困难。这是它们: 此项目的Maven依赖项为: org.apache.logging.log4j log4j-iostreams ${log4j.version} 包含块:import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.io.IoBuilder; - Aldis

1
即将发布的2.1版本包含一个新的log4j-iostreams模块,可以实现这个功能以及更多功能。很快就会发布。
如果您急需此功能,可以从主分支获取最新源代码并构建2.1快照。

1
刚刚下载了log4j2-5,但还是搞不清如何将System.out发送到文件。 - Scott Wardlaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接