log4jのconfig xmlを使用して、MDCで欠落しているエントリのデフォルト値を指定する方法を知っている人はいますか? 次のように XML ファイルでアペンダーを定義しています。
<appender name="DBAppender" class="org.apache.log4j.jdbc.JDBCAppender">
<param name="URL" value="jdbc:sqlserver://phenom\\MSSQLSERVER_2012\;databaseName=pickmax_express" />
<param name="Driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<param name="User" value="user" />
<param name="Password" value="password" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="INSERT INTO LOG (source, message, order_id, log_level) VALUES ( 'TESTSOURCE','%m', %X{orderID}, 0)"
/>
</layout>
</appender>
問題の部分は、MDC からの注文 ID (%X{orderID}) です。私は周りを検索し、$${orderID:-DefaultValue} の行に沿って何かを言っている同じスレッドの重複を見つけましたが、これはこのコンテキストでは機能しません。注文 ID を持たないコンテキストでログ メッセージが受信されたときに、値を 0 または -1 またはその他のセンティナル値にデフォルト設定できるようにする必要があります。