我正在处理关键任务应用程序。我想知道我必须传递什么JVM参数才能将泵out
和err
流传输到文件中。
我使用log4j
框架将slf4j
作为我的应用程序的一部分。有没有办法通过log4j
实现这一目标。
答案 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());
}