使用log4j2将System.out写入文件

Nik*_*iko 6 java configuration logging log4j log4j2

是否可以将System.out(OutputStream)直接写入日志文件,如"旧"log4j?

我只找到log4j的解决方案,而不是log4j2

谢谢你的帮助!

Ant*_*iuc 5

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

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

与以下 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
Run Code Online (Sandbox Code Playgroud)

我们应该在控制台中看到以下输出:

2017-10-28 12:38:22,623 [INFO] system.out - Lorem ipsum
Run Code Online (Sandbox Code Playgroud)

  • 我在 maven 依赖和包含方面苦苦挣扎。所以他们来了。Maven 依赖是:`<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-iostreams</artifactId> <version>${log4j.version}</version> </dependency >`。包含块:`import org.apache.logging.log4j.Level; 导入 org.apache.logging.log4j.LogManager; 导入 org.apache.logging.log4j.io.IoBuilder;` (2认同)

Rem*_*pma 1

即将发布的 2.1 版本包含一个新的 log4j-iostreams 模块,可以执行此操作以及更多操作。应该很快就出来了

如果您赶时间,您可以查看 master 的最新源代码并构建 2.1 快照。