0

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

将 System.out 和 System.err 重定向到 slf4j

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

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

4

1 回答 1

0

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

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

2>/dev/null 1>&2 &

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

于 2013-06-14T15:41:06.047 回答