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 を使用しています。