- PR -

JBOSS + Log4J

1
投稿者投稿内容
ふぉんだん
会議室デビュー日: 2004/10/06
投稿数: 7
投稿日時: 2004-10-06 20:46

JBOSSのlog4jを使用しログを自分のアプリケーションにあったログを出力しようと
してうまくいかずはまっています

環境は
WindowsXP
JBOSS 3.2.5
JAVA j2sdk1.4.2
となっております。

行った作業として

server/myserver/conf/log4j.xmlに以下のを追記しています

<!-- Fileにログを出力するFileAppenderをFILEOUTとして定義 -->
<appender name="MYFILEOUT" class="org.apache.log4j.FileAppender">


<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Append" value="false"/>
<!-- ログのファイル名 -->
<param name="File" value="${jboss.server.home.dir}/log/myServer.log" />
<!-- デフォルトのログレベル -->
<param name="threshold" value="INFO"/>
<!-- ログの出力形式を指定 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p] : %d{yyyy/MMM/dd HH:mm:ss} - %m -%n"/>
</layout>
</appender>

<!-- myProject Log -->
<category name="jp.co.mydomain">
<level value="DEBUG"/>
<appender-ref ref="MYFILEOUT"/>
</category>


package jp.co.mydomain.session

内にあるSessionBeanのクラスのメソッドから


Logger logger = Logger.getLogger(jp.co.mydomain.session.test.class.getName());

Logger logger = Logger.getLogger(jp.co.mydomain.session.test.class);
logger.debug("Test Log");

でloggerを作成しデバッグログを表示させようとしているのですが


${jboss.server.home.dir}/log/に
myServer.logファイルは作成されるのですが

こちらの方にログが出力されず
server.logの方に出力されてしまいます。

categoryを以下のように設定し

<!-- CMP Log -->
<category name="org.jboss.ejb.plugins.cmp">
<priority value="DEBUG" />
<appender-ref ref="MYFILEOUT"/>
</category>

CMPのSQLログを出力させた所
appenderを指定すると自分で設定したとおりに
myServer.logに出力されます

またappenderの部分をjboossが使用しているクラスでの指定や
<appender name="MYFILEOUT" class="org.jboss.logging.appender.RollingFileAppender">
なども試してみましたがうまくいきませんでした。

間違っているとしたらcategoryの部分か
loggerを作成する所だと思うのですが
categoryのnameやloggerの呼び出し方でおかしな所が
ご意見のほど、よろしくお願いします。

shinzou
会議室デビュー日: 2004/10/19
投稿数: 4
お住まい・勤務地: 金沢
投稿日時: 2004-10-26 18:24
自分も同様な環境でserver.logに出力されてしまいます・・・


_________________
未記入
会議室デビュー日: 2004/09/09
投稿数: 5
投稿日時: 2004-10-27 09:21
ログの出力設定にて、
<param name="threshold" value="INFO"/>
の記述があるため、このアペンダーでは debug レベルのログが切り捨てられています。
それが原因ではないかと。

また、server.log に出力される件ですが、私はJBossを使ってないので確かな事は言えませんが、
Log4J のカテゴリ指定は基本的に上位のアペンダーなどを受け継ぐため、
おそらく JBoss で root カテゴリに設定されている server.log への出力アペンダが継承されているためだと思います。
<category name="jp.co.mydomain" additivity="false">
のようにすると上位カテゴリのアペンダを継承しなくなりますので、 server.log へは出力されなくなると思います。

なにぶん検証していませんので、うまく動かない時は申し訳ありません。
ホッシー
会議室デビュー日: 2004/10/22
投稿数: 13
投稿日時: 2004-10-27 11:51
ひょっとして
<!-- myProject Log -->
<category name="jp.co.mydomain">
<level value="DEBUG"/>
<appender-ref ref="MYFILEOUT"/>
</category>
のlevel => priorityでは?

また、CMPのログではDEBUGのものが表示されてましたか?
表示されていれば、appender内で指定したものはcategoryで指定したもので
上書きされるということになるかと思います。
(ごめんなさい、確認してないので・・・、でもどっかで読んだことがあるような・・・)

未記入
会議室デビュー日: 2004/09/09
投稿数: 5
投稿日時: 2004-10-27 12:49
>ホッシーさん
見落としていました。
category での指定は、一般的には priority でしたね。
#ただ、Log4Jの設定ファイルのDTDを確認したところ、level でも指定できるかもしれません。
#ちょっと確信が持てません(^^;

また、アペンダーの
<param name="threshold" value="INFO"/>
は、ログの出力レベルではなく、ログの切り捨てレベルの指定なんです。
なので、ここで INFO を指定してしまうと、
category で何を指定しても、このアペンダーでは絶対に DEBUG レベルが出力されることはなかったりします。
ホッシー
会議室デビュー日: 2004/10/22
投稿数: 13
投稿日時: 2004-10-27 12:57
引用:

また、アペンダーの
<param name="threshold" value="INFO"/>
は、ログの出力レベルではなく、ログの切り捨てレベルの指定なんです。
なので、ここで INFO を指定してしまうと、
category で何を指定しても、このアペンダーでは絶対に DEBUG レベルが出力されることはなかったりします。



そうでしたか。切捨てレベルなんですね。
今度、試してみます。
ふぉんだん
会議室デビュー日: 2004/10/06
投稿数: 7
投稿日時: 2004-10-27 14:06
これらの方法で解決しました。

自分の調査不足だったようです
解答ありがとうございました

引用:

また、アペンダーの
<param name="threshold" value="INFO"/>
は、ログの出力レベルではなく、ログの切り捨てレベルの指定なんです。
なので、ここで INFO を指定してしまうと、
category で何を指定しても、このアペンダーでは絶対に DEBUG レベルが出力されることはなかったりします。



ここの部分はcategoryで設定をしなかった場合のデフォルト扱いで
categoryの設定をした場合はそちらが優先されるものだと思っていました
ログの切り捨てレベルの指定だったのですね

引用:

<category name="jp.co.mydomain" additivity="false">
のようにすると上位カテゴリのアペンダを継承しなくなりますので、 server.log へは出力されなくなると思います。



ご指摘通りでした
server.logにも出力されなくなりました

引用:

category での指定は、一般的には priority でしたね。
#ただ、Log4Jの設定ファイルのDTDを確認したところ、level でも指定できるかもしれません。



こちらの件は試してみた所
priority、levelでも大丈夫でした


[ メッセージ編集済み 編集者: ふぉんだん 編集日時 2004-10-27 14:10 ]
1

スキルアップ/キャリアアップ(JOB@IT)