【问题标题】:Log STDOUT and STDERR with SLF4J, but run as a daemon使用 SLF4J 记录 STDOUT 和 STDERR,但作为守护进程运行
【发布时间】:2013-06-04 01:45:53
【问题描述】:

我今天早些时候发现了这个,它很好地解决了我遇到的一个问题:

Redirect System.out and System.err to slf4j

但是,它导致了另一个问题:为了使这项工作正常进行,我无法在运行代码时关闭 stdout 和 stderr,否则我不会收到日志消息。这会在启动守护程序时导致问题,因为它会锁定终端。按 Ctrl+C 有效,但并不优雅。

那么,有谁知道我可以捕获发送到 STDOUT 或 STDERR 的消息但仍与终端断开连接的方法?

【问题讨论】:

  • 请您添加您的代码或您目前拥有的代码,以便我们更好地帮助您?
  • 很遗憾,我无法以当前形式向您展示我的代码。相关代码只不过是实例化记录器并使用它(例如 logger.info(...))以及该帖子中描述的内容。

标签: java stdout slf4j stderr


【解决方案1】:

好的。我想到了。我之前没有注意到它,但我引用的代码保留了 System.out 和 System.err 的旧流,以防用户想要恢复打印到其中任何一个。删除该代码解决了我的问题。

编辑:此外,必须在 java 命令末尾使用以下内容将 stdout/stderr 重定向到 /dev/null 以启动进程:

2>/dev/null 1>&2 &

这似乎工作正常。希望这对将来的其他人有用。

【讨论】:

    猜你喜欢
    • 2012-10-22
    • 2023-03-02
    • 2016-12-21
    • 2011-06-19
    • 1970-01-01
    • 2013-01-26
    • 2014-07-14
    • 1970-01-01
    • 2012-12-03
    相关资源
    最近更新 更多