アプリ開発ときどきアウトドア

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

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行目)


(adsbygoogle = window.adsbygoogle || []).push({});


(adsbygoogle = window.adsbygoogle || []).push({});

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

執筆者:


comment

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

関連記事

Wildflyでリクエストをダンプする

Webアプリのデバッグや障害対応等で、Webアプリに対するリクエストやレスポンスのHTTPヘッダや内容を確認したい場合がある。 次のような場面ではクライアント側での確認ができないため、今回のようにAP …

SLF4Jの仕組みと使用方法

何気に使用しているSLF4Jの仕様やその仕組みを整理したいと思います。 前提 元ネタは次のSLF4J Manualサイトです。 www.slf4j.org  1 share 1&n …

wildflyへのwarデプロイの自動化

更新したWebアプリをWildflyにデプロイするのが面倒なのでスクリプトを作成してみました。 前提 実行環境はCentOS Linux 7です。 JavaEEのWebアプリの配布形式であるwarファ …

疎通確認用pingツール

新人君たちと本番環境の構築作業でデータセンターに入り。 構築したサーバから、既存の重要なサーバへの疎通確認を行うために、pingを何度も入力する予定とのこと。 作業時間の短縮や間違いの低減のために、こ …

PowerPointの削除できない個人情報を消す

PowerPointで「個人情報の削除」を実行するとこで、作成者や会社名等の個人情報を削除できます。しかしながら、特定の項目に入った個人情報については、PowerPointやWindowsの標準機能で …

プロフィール ゆっきーです。
都内でシステムエンジニアをやっています。
もっと詳細を見る