将系统输出到文件的JVM参数

时间:2017-03-28 07:29:41

标签: logging java-8

我正在处理关键任务应用程序。我想知道我必须传递什么JVM参数才能将泵outerr流传输到文件中。

我使用log4j框架将slf4j作为我的应用程序的一部分。有没有办法通过log4j实现这一目标。

1 个答案:

答案 0 :(得分:0)

    ...
      //Save default stdout and change stdout to be written to a buffer instead of console
      PrintStream defaultOut = System.out;
      ByteArrayOutputStream buffer = changeSystemOutputStream();
      try {
        //Do Stuff that would write to stdout
      }
      finally{
        //Change stdout back to default and write the log messages to file
        revertSystemOutputStream(buffer, defaultOut);
      }
    ...

    ByteArrayOutputStream changeSystemOutputStream(){
      ByteArrayOutputStream  buffer = new ByteArrayOutputStream();
      System.setOut(new PrintStream(buffer));
      return buffer;
    }

    void revertSystemOutputStream(ByteArrayOutputStream buffer, PrintStream defaultOut ) {
      System.setOut(defaultOut);
      writeToFile(buffer.toString());
    }