2016-08-26 31 views
4

Logbackを使用してJavaプログラムでSystem.outメッセージをキャプチャするにはどうすればよいですか?Logbackを使用してSystem.outをログファイルにリダイレクトする方法は?

System.out.println("test: console out to file instead"); 

を...そして、それは、ファイルに出力しますキャプチャ:

例えば、私はこのコードを使用したいと思います。

これはlogback.xml設定ファイルを使用して行うことができますか?

+0

http://fahdshariff.blogspot.no/2010/10/redirect-stdout-to-logger.html –

答えて

4

があなたのためにこれを行い、ほとんどのjarあります...に似ていくつかの設定でそれを行うことができます:http://projects.lidalia.org.uk/sysout-over-slf4j/index.html

FAQを読んでください:http://projects.lidalia.org.uk/sysout-over-slf4j/faq.html - あなたがこれを使用する場合D

あなたはこの自分をしたい場合は、System.outおよびシステムを交換する必要があります:あなたはにStackOverflowError秒のストリームを取得します、標準出力に出力するlogbackをモジュールと設定.errをカスタムのPrintWriter(?私は完全にクラス名を覚えていない)。このカスタムPrintWriterは、印刷ライターは行単位ではなく文字単位で印刷できるため、セミインテリジェントな方法でログバックへの呼び出しを転送する必要があります。

+0

コードでロガーオブジェクトを作成するのではなく、標準出力をリダイレクトしようとしている間違った経路にいると思われました。これを行うためにjarが必要な場合は、私の目標を達成するためにlogback、xmlの基本的な設定がないと思われます。 – Matthew

+1

jarファイルは必要ありません。コードにSystem.outとSystem.errを設定するだけです。 Systemクラスのメソッドを見てください。あなたがする必要があるのは、ファイルに出力するOutputStream(FileOutputStreamなど)を渡すことだけです。 – n247s

+1

@Matthewプロジェクトのホームページには、非常に古いコードや悪いライブラリの「ハック」があります。このようなものに頼って新しいアプリを作るべきではありません。そこのコードはスーパーコンプレックスではありません。 – Augusto

-1

はい、あなたは

<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> 
    <target>System.out</target> 
    <filter class="com.foo.StdOutFilter" /> 
    ... 
</appender> 
<logger name="mylogger" level="debug"> 
    <appender-ref ref="stdout" /> 
</logger> 
+3

これはコンソールに記録しています。問題はそれとは逆です。実際には、System.outをキャプチャしてファイルに書き出します。 – rustyx

関連する問題