JDBC-appender Log4j - PullRequest
       11

JDBC-appender Log4j

2 голосов
/ 12 августа 2010

Переосмысленная ИДЕЯ!

Итак, я думала о выходных и не могла отпустить этот.Я решил снова попробовать идею заставить log4j работать.

Я занимался кодированием и думаю, что заставил его работать.Кроме того, я не очень понимаю, как вставить в регистратор.Я создал JDBC-appender, и SQL выглядит так:

    <layout class="org.apache.log4j.PatternLayout"> 
        <param name="ConversionPattern" 
          value="INSERT INTO audit (timestamp, user, operation, source, resourceRange, additionalInfo) VALUES ('%d{yyyy-MM-dd H:mm:s,SSS}','%m', '%m', '%m', '%m', '%m')"
        /> 
    </layout> 

Это правильно?Все значения имеют тип данных VARCHAR.

Но реальный вопрос для меня заключается в том, как мне записать это в Java-код?
Не могу понять, какие значения вставить, чтобы получить правильные значения длявставить базу данных.

 logger.log(?);

Ответы [ 2 ]

3 голосов
/ 12 августа 2010

Просто чтобы убедиться;Вы не можете использовать log4j и использовать JDBCAppender или DBAppender?( Войдите в базу данных, используя log4j )

РЕДАКТИРОВАТЬ:

Мое предложение будет иметь именованный appender, который входит в базу данных.

Byотключив аддитивность (log4j.additivity.database=false), он не будет «выталкивать» операторы журнала в корневой логгер, сохраняя эти данные из файла / консоли журнала по умолчанию.Именованный регистратор может быть извлечен с помощью Logger.getLogger("database"); из разных мест исходного кода.

РЕДАКТИРОВАТЬ 2:

Я думаю, что было бы лучше оставить исходный вопрос и задатьновый, но здесь идет.:)

Заявитель должен содержать информацию о соединении с базой данных, либо как ссылку на соединение: <param name="connector" value="name.of.existing.ConnectionHandler" />, либо путем указания url, username и password.

При настройке регистратора имя является важным битом для получения регистратора.Установив аддитивность регистраторов к fale, вы не сможете добавить эту запись в регистратор по умолчанию, заданный <root> в конфигурации:

<appender name="JDBC" class="org.apache.log4j.jdbcplus.JDBCAppender">
    [...]
</appender>
<logger name="myLogger" additivity="false">
    <appender-ref ref="JDBC"/>
    [...]
</logger>

Теперь вы можете ссылаться на регистратор в коде Java с помощью:

private static final Logger usageLog = Logger.getLog("myLogger");

из любого файла Java.Затем вы используете регистратор, как всегда, с usageLog.debug("Debug message"); или чем-то еще.

РЕДАКТИРОВАТЬ 3:

См. PatternLayout javaDoc , какие флаги использовать в ConversionPattern.

0 голосов
/ 12 августа 2010

LogBack предлагает вход в базу данных из коробки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...