ログイングループ毎にログファイルを分けて出力する方法はありますか。

2つの方法がございます。
1.LogBackのfilter機能を利用する方法
2.ロガー名の先頭をログイングループ名とする方法

上記の方法につきましてはWebPlatform Ver7.0以降で利用可能です。

【方法1】LogBackのfilter機能を利用する方法
WebPlatform Ver7.0以降に搭載された、LogBackのfilter機能(http://logback.qos.ch/manual/filters.html)およびJaninoのライブラリを利用する方法です。
LogBackのfilter機能は、簡単にお伝えしますと、なんらかの値を元にログの出力方法を変更する仕組みです。

以下、簡単なサンプルを例示いたします。
添付ファイルもあわせてご参照ください。

●準備
(1) ログイングループごとのログ設定ファイルをコピーして下さい。
conf/log/login_group_for_default_logger.xml
conf/log/login_group_for_hoge_logger.xml
※添付したものは、「default」と「hoge」の二つのログイングループ用に作成されております。
適宜内容を変更してください。

(2) サーブレットフィルタのクラスをコピーして下さい。
doc/imart/WEB-INF/classes/sample/MDCTestFilter.java

(3) web.xmlの編集。
上記サーブレットフィルタを全てのURLに対してマッピングします。
web.xml設定例
<web-app>



<filter>
<filter-name>MDCTestFilter</filter-name>
<filter-class>sample.MDCTestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MDCTestFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>



<web-app>

(4) Janinoを以下のサイトからダウンロードし、Janino解凍後にライブラリ「janino.jar」を以下のディレクトリにコピーします。
ディレクトリ <%im_path%>/lib/
なお、弊社ではJanino Ver2.5.15にて動作確認を行っております。
(http://docs.codehaus.org/display/JANINO/Home)

(5) <%im_path%>/conf/imart.xmlを以下のように設定してください。
//----
<compiler>
<class>
<archive>
<file/>
</archive>
</class>
</compiler>
・・・
//----

//----
<compiler>
<class>
<archive>
<file/>
<directory>lib</directory>
</archive>
</class>
</compiler>
・・・
//----

---------------------
解説
---------------------
1:サーブレットフィルタ「MDCTestFilter」にてMDCにログイングループidを設定しています。
2:MDCに設定されたログイングループを判定し、ログ出力可否を判定。
(login_group_for_default_logger.xmlの5行目が該当)

上記のサンプルを参考に実装していただければ、LogBackのfilter機能が設定できるかと思います。
なお、LogBackのfilter機能の詳細は、以下をご参照ください。
http://logback.qos.ch/manual/filters.html
 

【方法2】ロガー名の先頭をログイングループ名とする方法
作成するアプリケーションにて、ロガー名の命名ルールを決めるという方法です。
例えば、以下のように、ロガー名の先頭をログイングループ名に設定します。
----
var logingGroupName = AccessSecurityManager.getSessionInfo().loginGroup;
var logger = Logger.getLogger(logingGroupName + ".foo.bar");
logger.info("message");
----
あとは、設定ファイルで出力先を変更する設定を行います。
例えば、ログイングループ「default」を別ファイルに出力する際は、まず、設定ファイル内のloggerを以下のように設定します。
----



1: <logger name="default" additivity="false">
2: <level value="info" />
3: <appender-ref ref="LOGIN_GROUP_DEFAULT_FILE" />
4: </logger>



----
次に、上記3行目で指定した「LOGIN_GROUP_DEFAULT_FILE」のappenderを定義し、そのAppender内で、出力先を指定します。
なお、intra-martの特定用途ログ(=request.logなど)は、上記と同様の方法で出力先を変更しています。
つまり、ロガー名の先頭に特定の命名ルールを設けて出力先変更しております。
conf/im_logger_request.xmlを参照して頂きますとイメージがとらえやすいかと思いますので合わせてご参照ください。


-- 対象 ------------------------------------------------------------------------
iWP/Webシステム構築基盤/WebPlatform/AppFramework
--------------------------------------------------------------------------------

FAQID:325
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
Powered by Zendesk