1

jboss コンテナーで実行されるアプリケーションで slf4j を使用しています。基礎となるフレームワークは log4j です。

問題は、ロギング パターンのメソッド名 (%M) と行番号 (%L) タグが正しく解釈されていないことです。

メソッド名の代わりに、'debug' または 'info' が表示されます。つまり、log4j または slf4j クラスのメソッドです。同様に、行番号はコードの行番号に対応していません。たとえば、すべてのデバッグ エントリの行番号は 104 です。

サンプル アペンダーの構成方法は次のとおりです。

 <appender name="catalog-log" class="org.apache.log4j.FileAppender">
 <param name="File" value="logs/catalog.log" />
 <param name="Append" value="true" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d{dd.MM.yyyy HH:mm:ss}|%c:%L|%M|%1.1p|%m  %n" />
  </layout>
 </appender>

および出力例:

17.07.2013 09:43:07|com.ecommerce.CatalogAPIUnmarshallerXML:104|debug|G|Enter populateTariff
17.07.2013 09:43:07|com.ecommerce.CatalogAPIUnmarshallerXML:104|debug|G|adding new tariff = D 
17.07.2013 09:43:07|com.ecommerce.CatalogAPIUnmarshallerXML:104|debug|G|Found Tariff: D 
17.07.2013 09:43:07|com.ecommerce.CatalogAPIUnmarshallerXML:104|debug|G|Exit populateTariff

表示方法は次のとおりです。

17.07.2013 09:43:07|com.ecommerce.CatalogAPIUnmarshallerXML:3250|populateTariff|G|adding new tariff = D 
17.07.2013 09:43:07|com.ecommerce.CatalogAPIUnmarshallerXML:3261|populateTariff|G|Found Tariff: D 
17.07.2013 09:43:07|com.ecommerce.CatalogAPIUnmarshallerXML:3287|populateTariff|G|Exit populateTariff

log4j から slf4j に移行する前は、これは問題なく機能していました。

一部のクラスは slf4j に移行されていませんが、動作しています。行番号とメソッド名は問題なく表示されています。したがって、疑いの指は slf4j を指しています。または、おそらく、私の設定。

slf4j 1.5.8 と log4j 1.2.16 を使用しています。

4

0 に答える 0