我今天早些时候发现了它,它解决了我非常好的问题:
Redirect System.out and System.err to slf4j
然而,它导致了另一个问题:为了使这项工作,我无法在运行我的代码时关闭stdout和stderr,否则我不会得到日志消息。这会在启动守护程序时导致问题,因为它会锁定终端。按Ctrl + C可以正常工作,但不是很好。
那么,有没有人知道我可以捕获发送到STDOUT或STDERR的消息并仍然与终端断开连接的方式?
答案 0 :(得分:0)
O.K。我想到了。我之前没有注意到它,但我引用的代码保留了System.out和System.err的旧流,以防用户想要恢复打印到任何一个。删除该代码解决了我的问题。
编辑:另外,必须使用以下命令将stdout / stderr重定向到/ dev / null以启动该进程:
2>/dev/null 1>&2 &
这似乎工作正常。希望这对未来的其他人有用。