アプリケーションで log4j 2.0 を実行しようとしています。私のアプリケーションでは、2 つのロガーを設定しています。
何が起こっているかを確認できるように、コンソールに出力するもの。
もう 1 つは、テスト実行結果を DB2 テーブルに出力するためのものです。これは、テストがいつ実行され、結果がどうなったかを追跡するための完全に異なるログです。
問題は DB2 ロガーにあります。テーブルにレコードを書き込めないようです。次の理由により、私はもうすぐそこにいることを知っています。
- ダミーのライブラリまたはテーブル名を使用すると、構成中に log4j エラーが発生します。
- 偽のユーザー ID またはパスワードを使用すると、構成中に log4j エラーが発生します。
- ファイルに対する権限のない有効なユーザー ID/パスワードを使用すると、構成中に log4j エラーが発生します。
- しかし...これらすべてが正しければ、エラーはなく、記録も書き込まれません。
コンソールで、log4j の再構成が正しく終了したことを確認できます。
2013-10-02 11:31:06,261 DEBUG Reconfiguration completed
だから....私は何が欠けていますか?log4j サイトには、これに関するドキュメントはあまりありません。
アプリケーションのコードは次のとおりです。
public static void testExists(String myProcedure) {
final Logger console = LogManager.getLogger(myProcedure);
final Logger mytestlog = LogManager.getLogger(myProcedure);
.... yadda, yadda, yadda ....
.... and then finally, call the loggers with ....
console.info("== write this to the console ==");
mytestlog.info("== write this to the db2 log ==");
}
ここに私のlog4j2.xmlがあります
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%date{HH:mm:ss.SSS} %-5level{lowerCase=false} %logger{36} | %msg%n"/>
</Console>
<JDBC name="jdbc" tableName="vqccommon.sptestlog">
<ConnectionFactory class="foo.bar.chew.Log4jConnect" method="log4jConnect" />
<Column name="timestamp" isEventTimestamp="true" />
<Column name="testclass" pattern="%class" />
... some other columns ....
</JDBC>
</Appenders>
<Loggers>
<Logger name="sptestlog" level="trace">
<AppenderRef ref="jdbc" ></AppenderRef>
</Logger>
<Root level="trace">
<AppenderRef ref="Console" ></AppenderRef>
</Root>
</Loggers>
</Configuration>