Приложение базы данных Log4j - PullRequest
9 голосов
/ 22 июня 2011

Я хочу, чтобы 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?

Спасибо!

1 Ответ

6 голосов
/ 23 июня 2011

Хорошо, я нашел, как это сделать благодаря этому сообщению: Пользовательские поля Log4J

В основном я использую 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> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...