2016-05-12 12 views
0

JBoss EAP 6.4を使用しています(AS 7.xだと思います)。JBossでstd-outのキャプチャを無効にする方法は?

デフォルトでは、JBossのロギングサービスはすべてのアプリケーション出力をstdout(おそらくstderr)にキャプチャし、独自のlog4jベースのログにラップしています。ローカルで実行すると、私は完全にこの(煩わしい)機能を無効にしたいのですが、私がInterwebsで見つけた参考資料は動作しないか、古いバージョンのJBoss用です。私はjboss-deployment-structure構成の可能なすべてのログフレームワークを除外してみましたが、-Dorg.jboss.logging.per-deployment=falseをシステムプロパティとして渡しましたが、JBossはstdoutをキャプチャしています。

このバージョンのJBossではどうすれば無効にできますか?


あなたはその理由を知っていなければならない場合、我々はlogbackを経由して、詳細なログ構成を持っているためとIDEでローカルに実行するのJBossずに見ると、コンソールにログ出力を制御することができるようにしたいとき、[1]、それはですロギングサービスが途切れることはありません。

答えて

0

これは、エントリポイントでstdoutstderrをキャプチャするためにハードコードされています。これは両方のストリームが定義されたログハンドラに書き込まれるように行われます。このため、その周りには本当にクリーンな方法はありません。しかし、それは少なくとも少し良く見えるようにする方法があります。

console-handlerを新しく作成し、stdoutロガーを定義して、単純なメッセージだけが書き込まれるようにすることができます。

stdoutという名前のロガーを設定して、受け取ったメッセージを印刷するだけのCLIコマンドもあります。

/subsystem=logging/pattern-formatter=plain-formatter:add(pattern="%s") 
/subsystem=logging/console-handler=plain-console:add(autoflush=true, target=System.out, named-formatter=plain-formatter) 
/subsystem=logging/logger=stdout:add(use-parent-handlers=false, handlers=[plain-console]) 

注:それは私のテストlogback.xml構成かもしれないが、私はplain-formatterため%s%nのパターンを使用する必要がありました。私は考えることができる

唯一の他のオプションは、java.io.FileOutputStream.outではなくSystem.outを使用してに基づいて、出力ストリームを作成し、独自のlogback ConsoleAppenderを書くことであろう。

+0

私はこれを使って質問を編集しますが、それをもっときれいにすることさえ十分ではありません。問題は、slf4jのログ呼び出しでレベル(デバッグ、インフォメーション、エラーなど)が指定されていますが、JBossのロギングはINFOレベルですべてをラップして出力します。だから、たとえばrootのログバックレベルをWARNに設定したい場合は、コンソールにアプリケーション出力が表示されません。なぜ私のWARのlogback.xmlがJBossの標準出力フィルタリングに影響を与えているのか分かりませんが、それは私が見てきたことです。 –

+0

ところで、回答の設定はどこに行きますか? –

+0

logback.xmlは、展開にログバックを含める場合にのみ使用されます。独自のログマネージャを設定したいのですか、コンテナがログ設定を処理したいのですか? –

関連する問題