【问题标题】:write System.out to file with log4j2使用 log4j2 将 System.out 写入文件
【发布时间】:2014-10-11 19:13:30
【问题描述】:

是否可以将 System.out (OutputStream) 直接写入“旧”log4j 中的日志文件?

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

感谢您的帮助!

【问题讨论】:

    标签: java logging configuration log4j log4j2


    【解决方案1】:

    使用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
    

    【讨论】:

    • 我在 Maven 依赖和包含问题上苦苦挣扎。所以他们在这里。对此的 Maven 依赖项是:<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-iostreams</artifactId> <version>${log4j.version}</version> </dependency>。包含块:import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.io.IoBuilder;
    【解决方案2】:

    即将发布的 2.1 版本包含一个新的 log4j-iostreams 模块,它可以做到这一点以及更多。应该快出来了。

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

    【讨论】:

    • 刚刚下载了log4j2-5,还是不知道如何将system.out发送到文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多