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

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

関連記事

Apacheでクライアント証明書認証の方法

概要 クライアント証明書認証を行うリバースプロキシサーバを構築する方法を説明します。 フロントのリバースプロキシサーバ、バックエンドにWebアプリを配置した構成を想定しています。 リバースプロキシサー …

.NET Core(C#): MoqのSetupProperty()/SetupGet()/SetupSet()の違い

はじめに 次の環境を使用して動作確認しています。 OS Windows 10(64ビット) IDE Microsoft Visual Studio Community 2019(16.8.5) + C …

mybatis-generatorプラグインの実装方法

mybatis-generatorを使うことで、各テーブルを操作するためのクラス群を容易に準備することができます。しかしながら、mybatis-generatorが提供する機能では、システム開発で求め …

ASP.NET Core: IHttpClientFactoryの使用方法

とりあえず、どんなサンプルになるか知りたい人は下記のサンプルをご覧ください。 ASP.NET Core: IHttpClientFactoryの単純サンプル ASP.NET Core: IHttpCl …

パック10進数の変換方法とC#のサンプル

なお、ゾーン10進数はこちらで紹介しています。 パック10進数 ゾーン10進数の変換方法 10進数の各桁を「上位4ビットで1桁、下位4ビットで1桁」のバイトに変換して生成します。 生成したバイト列の最 …