Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 默认log4j MDC值_Java_Log4j_Mdc - Fatal编程技术网

Java 默认log4j MDC值

Java 默认log4j MDC值,java,log4j,mdc,Java,Log4j,Mdc,有人知道如何使用log4j的config xml为MDC中缺少的条目指定默认值吗?我在XML文件中定义了一个appender,如下所示: <appender name="DBAppender" class="org.apache.log4j.jdbc.JDBCAppender"> <param name="URL" value="jdbc:sqlserver://phenom\\MSSQLSERVER_2012\;databaseName=pickmax_expres

有人知道如何使用log4j的config xml为MDC中缺少的条目指定默认值吗?我在XML文件中定义了一个appender,如下所示:

<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或其他一些sentinal值。如果在java代码中访问MDC对象,可以通过在某些启动区域(例如,servlet init()方法)中添加以下内容来初始化订单ID的值:


编辑:每次编写没有orderId值的日志消息时,以及每次MDC.remove()之后,似乎都需要设置此默认值。AOP似乎是这里的一个选项。

您还可以在布局模式中定义默认值,如%X{orderID:-Def value}

<param name="ConversionPattern" 
          value="INSERT INTO LOG (source, message, order_id, log_level) VALUES ( 'TESTSOURCE','%m', %X{orderID:-Def value}, 0)" 
        />

谢谢您的帮助。虽然这不能解决我的问题,但在玩了它之后,我对MDC有了更多的了解,所以+1。
<param name="ConversionPattern" 
          value="INSERT INTO LOG (source, message, order_id, log_level) VALUES ( 'TESTSOURCE','%m', %X{orderID:-Def value}, 0)" 
        />