イントラマートで独自のログファイルにログを出力する方法

2018-02-07イントラマート

イントラマートで独自のログファイルを新規に追加して出力する方法です。

イントラマートとは
株式会社NTTデータイントラマート社が開発・販売している、Webアプリケーションシステムのシステム共通基盤(統合型フレームワーク)で、国内の著名企業を中心に6,000社以上に導入されています。 イントラマートを導入することにより、Webシステム開発における短納期・低コスト・標準化推進・品質向上を実現できます。
詳しくはこちらをご覧ください。

イントラマートで独自のログファイルにログを出力する方法

イントラマートで独自のログファイルにログを出力するにはxmlで設定ファイルを作成する必要があります。

intra-mart Accel Platform では ロギングライブラリとして 「SLF4J」、その実装ライブラリとして「Logback」を採用しています。

概要 — ログ仕様書   第9版 2017-04-01   intra-mart Accel Platformより引用

とあるように「SLF4J」、「LogBack」の設定をしてあげる必要があります。

設定ファイル

設定ファイルはxml形式で以下のようなファイルを作成し、 イントラマートログインフォルダー配下の「/WEB-INF/conf/log」にわかりやすい名前で保存します。
(ファイル名は独自に決定することができます。)

<included>
    <appender name="USER_LOG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${im.log}/platform/user_log.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${im.log}/platform/user_log-%d{yyyy-MM-dd}.zip</FileNamePattern>
            <MaxHistory>7</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="jp.co.intra_mart.common.platform.log.layout.OutputStackTracePatternLayout">
                <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%-8level]%msg%nopex%n</pattern>
                <enableOutputStackTrace>true</enableOutputStackTrace>
                <stackTraceDir>${im.log}/platform/exception/</stackTraceDir>
                <stackTraceFilename>'exception_'yyyy-MM-dd_HH-mm-ss'_%logId.log'</stackTraceFilename>
            </layout>
            <immediateFlush>true</immediateFlush>
            <charset>Windows-31J</charset>
        </encoder>
    </appender>
    <logger name="DEBUG" additivity="false">
        <level value="debug" />
        <appender-ref ref="USER_LOG_FILE" />
    </logger>
    <logger name="ERROR" additivity="false">
        <level value="error" />
        <appender-ref ref="USER_LOG_FILE" />
    </logger>
    <logger name="WARNNING" additivity="false">
        <level value="warnning" />
        <appender-ref ref="USER_LOG_FILE" />
    </logger>
    <logger name="INFO" additivity="false">
        <level value="info" />
        <appender-ref ref="USER_LOG_FILE" />
    </logger>
</included>

<appender>にある「name」にはわかりやすい名前を独自に付けることができます。
<file>は実際にログを出力するファイル名を設定します。
<rollingPolicy>はログをローテーションさせる場合の設定で上の例では1日ごとに最大7日間分、user_log-年月日.zipでログをローテーションさせるという設定になっています。
(拡張子に「.zip」をしているすると自動でzipファイルに圧縮してログをローテーションしてくれます。

独自ログへの出力方法

設定した独自ログへの情報を出力する方法ですが、以下のように行います。

Logger.getLogger("DEBUG").debug("出力するメッセージ");
Logger.getLogger("INFO").info("出力するメッセージ");
Logger.getLogger("WARNNING").warn("出力するメッセージ");
Logger.getLogger("ERROR").error("出力するメッセージ");

スクリプト開発では「Logger」オブジェクトで出力したいログレベルを指定し、メソッドを呼び出します。

設定を変更した場合はイントラマートを再起動する必要があります。

株式会社システムトラスト

イントラマートの導入・開発についてなど気軽にご相談ください。

お問合せ