- - PR -
JBOSS + Log4J
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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の呼び出し方でおかしな所が ご意見のほど、よろしくお願いします。 | ||||||||||||
|
投稿日時: 2004-10-26 18:24
自分も同様な環境でserver.logに出力されてしまいます・・・
_________________ | ||||||||||||
|
投稿日時: 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-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-10-27 12:49
>ホッシーさん
見落としていました。 category での指定は、一般的には priority でしたね。 #ただ、Log4Jの設定ファイルのDTDを確認したところ、level でも指定できるかもしれません。 #ちょっと確信が持てません(^^; また、アペンダーの <param name="threshold" value="INFO"/> は、ログの出力レベルではなく、ログの切り捨てレベルの指定なんです。 なので、ここで INFO を指定してしまうと、 category で何を指定しても、このアペンダーでは絶対に DEBUG レベルが出力されることはなかったりします。 | ||||||||||||
|
投稿日時: 2004-10-27 12:57
そうでしたか。切捨てレベルなんですね。 今度、試してみます。 | ||||||||||||
|
投稿日時: 2004-10-27 14:06
これらの方法で解決しました。
自分の調査不足だったようです 解答ありがとうございました
ここの部分はcategoryで設定をしなかった場合のデフォルト扱いで categoryの設定をした場合はそちらが優先されるものだと思っていました ログの切り捨てレベルの指定だったのですね
ご指摘通りでした server.logにも出力されなくなりました
こちらの件は試してみた所 priority、levelでも大丈夫でした [ メッセージ編集済み 編集者: ふぉんだん 編集日時 2004-10-27 14:10 ] |
1