ゆっきーのブログ

実践的なシステム設計開発、アプリケーションフレームワーク開発、トラブルシューティング、 後輩育成のためのブログ。その他、キャンプ、トレッキング・登山やレジャー等。

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

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

関連記事

CentOS7のマルチホーム化

サイトの存在を隠しつつも、sftpサーバを公開し、後輩と1G以上のファイルのやりとりしたい。 パブリック側のIPアドレスを教えてしまうと、どこのサーバだろうかとブラウザで開いたりするとサイトの存在がわ …

技術検証

Linuxでの gdrive の使い方

wordpressのデータをgoogle driveにバックアップするための基礎調査を行っている。 google driveに接続可能なライブラリは幾つかあるようだが、ここでは無料でお手軽に始められそ …

WebサイトのSSL化

次のようなGoogleウェブマスター向け公式ブログでの推奨や、リモートか管理の安全性向上の向上のためにSSL(TLS)を有効にする。 概要 Googleさんの考え 保護されたウェブの普及を目指して(2 …

SLF4Jの仕組みと使用方法

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

WindowsにApacheを構築

アプリケーション開発環境として主にWindowsを使っています。 開発時の検証で使用するミドルウェアがApacheを使用することが多いので、ここでは開発環境であるWindowsにApacheを構築する …