SLF4J with SimpleLogger:是否可以同时将日志记录到文件和System.out?

7
我正在使用SLF4J 1.7.5的SimpleLogger绑定。根据文档,我可以在simplelogger.properties文件中使用org.slf4j.simpleLogger.logFile属性来指定日志文件或System.out或System.err。
然而,我想将日志消息发送到System.out和日志文件。有人知道如何使用SimpleLogger实现这一点吗?(我正在使用Windows,因此无法仅使用tail -f在控制台窗口中跟踪日志文件;也不想获取第三方工具,在Windows中模拟“tail -f”。)
1个回答

11

简短回答

您不能使用SimpleLogger来做到这一点。

更详细的回答

放弃SimpleLogger,转而使用其他东西。 您有以下选项:

  1. 不要使用slf4j-simple-1.x.x.jar,改用logback(logback-classic.jar和logback-core.jar)。 使用logback,您可以定义两个记录器,一个用于文件输出,一个用于控制台(也称为System.out)输出。

  2. 不要使用slf4j-simple.1.x.x.jar,改用xxx(替换为slf4j支持的任何日志系统),并执行与第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无法实现我想要的结论。毕竟它只是“简单”的!不过,接下来我本来就打算尝试使用SLF4J和Logback,所以我会选择你的第一种选项。 - snark

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