使用SLF4J记录STDOUT和STDERR,但作为守护程序运行

时间:2013-06-07 17:01:27

标签: java stdout slf4j stderr

我今天早些时候发现了它,它解决了我非常好的问题:

Redirect System.out and System.err to slf4j

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

那么,有没有人知道我可以捕获发送到STDOUT或STDERR的消息并仍然与终端断开连接的方式?

1 个答案:

答案 0 :(得分:0)

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

编辑:另外,必须使用以下命令将stdout / stderr重定向到/ dev / null以启动该进程:

2>/dev/null 1>&2 &

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