Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > log4j - журналирование групповых операций


Автор: Alexandr87 2.9.2008, 15:32
Суть такая. Есть группа операций, состоящая из множества (5-10) мелких операций. Каждая из таких мелких операций должна оставлять в журнале результат своей работы. Одновременно в нескольких потоках выполняются несколько групп операций. Нужно чтобы в конечном журнале (файле, БД) они шли подряд (без перебивки записей из других потоков), а в БД вообще желательно чтоб легли одной записью.
С log4j работал давно и не глубоко, поэтому заранее извиняюсь если где-то спорол бред по незнанию.

Автор: COVD 2.9.2008, 16:33
Очевидно, этого можно добиться только накапливая где-то записи одной группы перед сохранением их в файл или дб. Если это необходимо только для удобства просмотра, то, на мой взгляд, смысла нет заморачиваться. И даже вредно, потому что запись в лог должна быть сохранена как можно быстрее.  
Для просмотра логов удобно пользоваться специальными инструментами ( например,  http://www.baremetalsoft.com/baretailpro/ )  - там и поиск и фильтрация и группировка.

Автор: sandello 3.9.2008, 07:05
Цитата(Alexandr87 @  2.9.2008,  18:32 Найти цитируемый пост)
Нужно чтобы в конечном журнале (файле, БД) они шли подряд (без перебивки записей из других потоков)

Зачем это, если не секрет?

Я бы сделал так:
Для каждой группы операций генерил бы свой ID. И при выводе в каждую строчку писал бы его. А с порядком в файле, имхо, не нужно заморачиваться.
Зачем в БД одну запись? Ты ее всегда сможешь получить из нескольких, если знаешь по какому признаку их сгруппировать.
Т.е. главное: сделать уникальный идентификатор группы операций.

Автор: LSD 10.9.2008, 14:48
В Log4j есть такая штука как http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/NDC.html и http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/MDC.html. Мы можем в этот контекст во время работы класть, все что нам нужно, а потом при логировании можно этот контекст записать в лог.

Если это не устраивает, то можно пошаманить со своими аппендерами или фильтрами.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)