2017-03-28 8 views
0

私はミッションクリティカルなアプリケーションを扱っています。私は、ファイルにouterrストリームを渡すために渡さなければならないJVMの引数を知りたいと思います。ストリームをファイルに書き出すためのJVM引数

slf4jフレームワークを使用して私のアプリケーションの一部としてlog4jを持っています。 log4jでこれが達成できる方法はありますか?

+1

あなたは(http://stackoverflow.com/questions/15403275/redirect-system-out-println-to-log)[ログインにリダイレクトするSystem.out.printlnを]をチェックするか、[「作りたかったですSystem.out.println() "を使用してlog4jにメッセージを出力する](http://stackoverflow.com/questions/6566960/want-to-make-system-out-println-to-print-message-to-log4j) ? – Roland

+0

'cron 'ではなく、実際にはWeblogic 12cで実行されるものもあります。 –

+1

ミッションクリティカルなアプリケーションをお持ちの方は、なぜ「out」または「err」に書き込むのですか?どこで 'cron'を見ましたか?私は' cron'についてリンクしたり、何も言いませんでしたか?しかし、あなたがWeblogicについて何か書いているように。次はあなたを助けてくれるでしょうか? [WebLogicですべての "コンソール"メッセージをファイルに記録する方法は?](http://stackoverflow.com/questions/8112581/how-to-make-weblogic-log-all-console-message-into-a-file ) – Roland

答えて

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()); 
    } 
+2

これはstdoutのみです。 System.setErrを使ってerrに対しても同じことをする –

関連する問題