Logback - SiftingAppender с внедренной БД Appender

Мне известно о SiftingAppener и его способности разделять события регистрации в отдельных файлах журнала

Вместо этого SiftingAppender может разделять события журналирования в соответствии с сеансами пользователя, так что журналы, генерируемые каждым пользователем, попадают в ОДИН оператор SQL-вставки (аналогично FileAppender с одним файлом)

Есть идеи или предложения о том, как этого добиться?

Пожалуйста, обратите внимание на номера строк

До:

    TimeStamp       Formatted   Message     Logger_Name         Level_String
1   1321325688174   Step 2:     Then stop   com.test.Account    INFO
2   1321325687931   Step 1:     The force   com.test.Account    INFO

После:

    TimeStamp       Formatted   Message     Logger_Name         Level_String
1   1321325688174   Step 2:     Then stop   com.test.Account    INFO
    1321325687931   Step 1:     The force   com.test.Account    INFO

Благодарю.

1 ответ

Решение

Я не знаю ни одного существующего аппендиата, который бы делал это, но это не так сложно сделать самому. Вам потребуется реализовать собственный класс appender, который расширяет AppenderBase, и настроить SiftingAppender для его использования.

Внутри вашего нового CachingSqlAppender (или как вы его называете) вам придется обрабатывать временное кэширование всех запросов внутри вашего аппендера, а затем через некоторый заранее заданный интервал выписывать их все.

Тем не менее, кажется, что это может быть трудной задачей для правильного выбора времени, потому что вам придется выяснить, как долго ваш аппендер ожидает другого события, прежде чем делать вставку, и он должен быть как минимум короче, чем срок службы SiftingAppender. дает appenders, которые он создает.

Другие вопросы по тегам