【问题标题】:SLF4J with SimpleLogger: Is it possible to log to a file AND System.out?带有 SimpleLogger 的 SLF4J:是否可以记录到文件和 System.out?
【发布时间】:2013-09-17 16:13:17
【问题描述】:

我正在为 SLF4J 1.7.5 使用 SimpleLogger 绑定。根据docs,我可以在我的 simplelogger.properties 文件中使用 org.slf4j.simpleLogger.logFile 属性来指定日志文件 OR System.out OR System.err。

但是,我想将日志消息发送到 System.out 和日志文件。请问有谁知道如何使用 SimpleLogger 来实现这一点? (我使用的是 Windows,所以不能使用 tail -f 来跟踪控制台窗口中的日志文件;我也不想在 Windows 中获得模拟“tail -f”的第三方实用程序。)

【问题讨论】:

    标签: java logging slf4j


    【解决方案1】:

    简答

    你不能用 SimipleLogger 做到这一点。

    更多答案

    放弃 SimpleLogger 并继续做其他事情。您有以下选择:
    1. 获取 logback(logback-classic.jar 和 logback-core.jar),而不是使用 slf4j-simple-1.x.x.jar。使用 logback,您可以定义两个附加程序;一个用于文件输出,一个用于控制台(也称为 System.out)输出。

    2. 不要使用 slf4j-simple.1.x.x.jar 获取 xxx(替换 slf4j 支持的任何日志记录系统)和 blah blah blah(与上述 1 中相同)。

    3. SLF4j 是开源的;派生您自己的记录器(我们称之为 TeeLogger),记录到 System.out 和一个文件。

    4. 创建一个位于 SLF4j 前面的日志记录类(在您的应用程序中)。让它接受一个 Logger 和一个消息,然后让它将消息写入 System.out 和 Logger。

    5. 我不知道的事情。

    这是上面 #4 的一个(超级简单的)示例:

    import org.slf4j.Logger;
    
    public class LoggyLoo
    {
        public static void logZoreInfo(
            final Logger logger,
            final String message)
        {
            System.out.println(message);
            logger.info(message);
        }
    }
    

    【讨论】:

    • 感谢@DwB。我几乎得出结论,SimpleLogger 无法实现我想要的。毕竟它只应该是“简单的”! Logback 是我接下来要用 SLF4J 尝试的,所以我会选择 #1。
    猜你喜欢
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多