NDW

アプリ開発やトラブルシューティング等のノウハウ、キャンプや登山の紹介や体験談など。

1. システムエンジニアリング eap/wildfly 基盤技術

JBoss EAP7でDEBUG/TRACEログを出力

投稿日:2018年12月24日 更新日:


JBoss EAP7でアプリのDEBUGやTRACEのログを出力する方法を記載します。
開発の序盤でアプリのDEBUGログがeclipseのコンソールやログファイルに出力されず、困る場合があるので、メモとして残しました。

前提

  • Windows環境での設定を前提とします。
    (本番の実行環境はLinuxがほとんどですが、開発環境としてはWindowsが多いため。)
  • 対象のサーバはJBoss Application Server 7.1(EAP7.1)をとします。Wildflyでも同様と思われます。
  • 開発アプリではmaven(pom.xml)を使用する前提です。
  • 次のようにロギングAPIであるslf4jを使ってロギングする前提の手順となります。
    package mycorp.myapp.view;
    ...
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    ...
    public class HelloWorld {
    
    	private Logger logger = LoggerFactory.getLogger(getClass());
    	
    	public void init() {
    		logger.debug("test!");
    	}
    ...
    

設定手順

slf4jを使用するために次のようにアプリのpom.xmlにslf4jの依存関係を追加します。使用するバージョンは適宜修正してください。
なお、EAP7の場合はslf4jに対してjboss loggerがバインドされるので、log4jやlogback等のロギング実装を指定する必要はありません。

<project ...>
...
	<dependencies>
...
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.25</version>
		</dependency>
...
	</dependencies>
...
</project>

ログの出力元となるアプリのログレベルや、ログの出力先となるハンドラのログレベルを変更します。
jboss-eap-7.1\standalone\configurationにあるstandalone.xmlを開き、次のように修正します。

...
        <subsystem xmlns="urn:jboss:domain:logging:3.0">
            <console-handler name="CONSOLE">
                <level name="TRACE"/>
...
            </console-handler>
            <periodic-rotating-file-handler name="FILE" autoflush="true">
                <level name="TRACE"/>
...
            </periodic-rotating-file-handler>
            <logger category="com.arjuna">
                <level name="WARN"/>
            </logger>
...
            <logger category="mycorp">
                <level name="DEBUG"/>
            </logger>
            <logger category="mycorp.fw.listener">
                <level name="TRACE"/>
            </logger>
...
            <root-logger>
                <level name="INFO"/>
                <handlers>
                    <handler name="CONSOLE"/>
                    <handler name="FILE"/>
                </handlers>
            </root-logger>
...
        </subsystem>
...
  • 特に断りのないもの(ログ出力元=ロガー)はroot-loggerで指定したログレベル(INFO)未満は出力されない。(23行目)
  • 開発対象となるアプリではDEBUGレベルで出力したいので、アプリのロガー(この例ではmycorp)を個別に指定する。(16行目)
    アプリの中でも詳細にログを確認したいものは個別にTRACEを指定する。(19行目)
  • ハンドラ側(ログ出力先)でもログレベルによるフィルタがかかるので、これも下げる必要がある。(4, 8行目)






-1. システムエンジニアリング, eap/wildfly, 基盤技術


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

区分データ生成ツール

区分定義書の変更時、定数や列挙体、マスタの一部を手動で修正するような運用だと、抜け漏れや間違いが発生する場合があります。この辺の手間や間違いを低減するために、区分定義書から自動的に成果物を作成するEx …

slf4jとlog4j2を使たデバッグログの出力方法

Webアプリやスタンドアロンアプリの開発でデバッグログやトレースログを出したい場合があります。 とりあえず、ロガーのログレベルをdebugやtraceに下げればいいや、と設定してもログが出力されない場 …

500円でVPS:VULTRの$2.5/$3.5プラン

月額500円程度でVPSを運用できるVULTRの紹介です。 VULTR(ヴァルチャー)は米国フロリダにある会社で、日本法人はない。(LinkedIn) 欧米・アジア・日本等の17拠点のデータセンターを …

離脱確認ダイアログの仕様と表示方法

概要 ページ移動やページを閉じる際に、次のような確認ダイアログ(アンロードダイアログ)を表示できます。 ここでは、このダイアログの仕様や表示方法を説明します。 なお、このダイアログの正式名称がはっきり …

保守運用

運用 と 保守 の 違い

若い頃は 運用 と 保守 の違いを調べても良くわからなかった… この辺を使い分けられる人をほとんど見たことない… ある事項が運用なのか保守なのかの話をすると認識が合わない&#8 …