Java拦截自己的进程stdout和stderr流

时间:2016-05-09 18:23:53

标签: java logging stream stdout stderr

在Java中,我想拦截我的流程stdoutstderr。我不想阻止它最终进入控制台/默认目的地,但是在每个换行符中,我都需要将该行复制到我自己的日志文件中(使用一些格式和HTML化)。我可以看到这样做的唯一方法是something like this - 这可能有用,但我担心不同的字符集,最终希望以与以前相同的方式格式化输出而不是抑制它,我需要在每个换行符处理它,而不是在刷新时(即使使用auto-flush = true)。

是否有某种类型的库使这更容易?

1 个答案:

答案 0 :(得分:0)

  

但是在每个换行符中,我都需要将该行复制到我自己的日志文件中(使用一些格式和HTML化)。

为什么不考虑经典的Unix实用程序tee?演示:

  1. tail -f source | tee tee.sink
  2. echo "foo" >> source - 你应该看到" foo"也在您的终端
  3. cat tee.sink应显示foo
  4. 或者我误解了你想要的东西?