问题描述
我希望log4j在MySQL数据库中记录错误,但是有关此的官方文档非常稀疏(为什么?). 无论如何,这是我在log4j.xml配置文件上的尝试:
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="jdbcAppender" class="org.apache.log4j.jdbc.JDBCAppender"> <param name="URL" value="jdbc:mysql://my_host/my_database" /> <param name="Driver" value="com.mysql.jdbc.Driver" /> <param name="User" value="my_user_name" /> <param name="Password" value="my_passwod" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="INSERT INTO errorlogs (Date, log_level, Application, Message, Exception) VALUES (TIMESTAMP(now()),'%p', ?? '%m', '%e' )" /> </layout> </appender>
我需要自定义的"应用程序"参数.使用log4net在C#中,在我的代码中,我会这样添加:
log4net.GlobalContext.Properties["Application"] = applciation;
并在我的XML配置文件中添加它:
<parameter> <parameterName value="?application" /> <dbType value="String" /> <size value="50" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%property{Application}" /> </layout> </parameter>
我想知道如何使用log4j做同样的事情?
谢谢!
推荐答案
好吧,我找到了这篇文章的方法: log4j自定义字段/p>
基本上,我使用MDC添加我的自定义字段,例如:
MDC.put("Application", application);
和在我的配置文件中,我使用%x {property_name}获取值.这样:
<layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="INSERT INTO errorlogs (Date, log_level, Application, Message, Exception) VALUES (TIMESTAMP(now()),'%p', '%X{Application}' '%m', '%e' )" /> </layout>
问题描述
I want log4j to log my errors in a MySql database, but the official documentation on this is pretty sparse (why?). Anyway, here's my attempt at a log4j.xml config file:
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="jdbcAppender" class="org.apache.log4j.jdbc.JDBCAppender"> <param name="URL" value="jdbc:mysql://my_host/my_database" /> <param name="Driver" value="com.mysql.jdbc.Driver" /> <param name="User" value="my_user_name" /> <param name="Password" value="my_passwod" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="INSERT INTO errorlogs (Date, log_level, Application, Message, Exception) VALUES (TIMESTAMP(now()),'%p', ?? '%m', '%e' )" /> </layout> </appender>
I need the "Application" parameter to be custom. With log4net in C#, in my code I would add it like this:
log4net.GlobalContext.Properties["Application"] = applciation;
and add it like so in my xml config file:
<parameter> <parameterName value="?application" /> <dbType value="String" /> <size value="50" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%property{Application}" /> </layout> </parameter>
I was wondering how can I do the same thing with log4j?
Thanks!
推荐答案
Ok I found how to do this thanks to this post: Log4J Custom Fields
Basically, I use the MDC to add my custom fields, like this:
MDC.put("Application", application);
And in my config file, I use %X{property_name} to get the value. like this:
<layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="INSERT INTO errorlogs (Date, log_level, Application, Message, Exception) VALUES (TIMESTAMP(now()),'%p', '%X{Application}' '%m', '%e' )" /> </layout>