Как сгруппировать записи журнала Java? - PullRequest
3 голосов
/ 14 марта 2012

Я хотел бы сгруппировать записи в журнале Java для более удобного поиска.Я имею в виду, что есть следующие записи журнала:

14-Mar-2012 14:29:07 com.acme.service.AcmeService log
INFO: Start ACME operation
14-Mar-2012 14:29:07 com.acme.service.AcmeService log
INFO: step 1 - do something
...
14-Mar-2012 14:29:07 com.acme.service.AcmeService log
INFO: End ACME operation

Эти записи принадлежат друг другу, так как это этапы рабочего процесса (например, я хотел бы отслеживать процесс веб-службы).Есть ли хороший шаблон проектирования для хранения этих записей, чтобы я мог легко найти журналы запроса веб-службы?(например, поставить в начале всех записей журнала идентификатор)?Есть ли инструмент, который мог бы отображать эти журналы, группируя их автоматически?как бензопила log4j, но группировка по этому идентификатору?Спасибо!

Ответы [ 4 ]

4 голосов
/ 14 марта 2012

Вы используете сеансы в своем веб-приложении?Если это так, вы можете использовать идентификатор сеанса, чтобы различать запросы.

Извините, я только что понял из вашего примера, что я думаю, что вы используете java.util.Logging.Ниже будет работать только для log4j.Теперь мне любопытно посмотреть, есть ли у кого-нибудь исправление, потому что я тоже хотел бы знать.Из моего опыта работы с обоими я обнаружил, что log4j намного, намного проще в использовании и настройке.

Решение Log4j

Передача всех запросов через фильтри затем используйте NDC.push( id ).Затем используйте %x в вашем шаблоне для вывода в файл.

2 голосов
/ 14 марта 2012

Почему вы не продлили уровень и не добавили свои собственные уровни? Все журналы вашего веб-сервиса могут быть выполнены на этом уровне.

Если у вас есть собственный уровень, вы можете настроить его регистрацию, включая запись в другой файл и т. Д.

0 голосов
/ 19 марта 2012

Вы можете использовать бензопилу для анализа обычного текстового файла журнала, независимо от того, какой API ведения журнала использовался для его создания. См. Пример LogFilePatternReceiver в примере конфигурации xml получателя, доступном на вкладке «Добро пожаловать».

В вашем примере, как только вы включите сеанс в вывод файла журнала, вы можете добавить сеанс в качестве свойства, а затем раскрасить / отсортировать и отфильтровать, используя сеанс. Вы также можете использовать этот идентификатор сеанса в качестве «регистратора» и получить выгоду от способности дерева регистратора фокусироваться на отдельных регистраторах, что, по сути, дает вам «групповое» поведение.

0 голосов
/ 14 марта 2012

Если вы работаете в технологиях Spring, вы можете легко настроить модуль Spring Integration для получения журналов в канале, разделить их по типу с помощью маршрутизатора и сохранить их в базе данных с помощью исходящего адаптера. Большая часть проводки выходит из коробки, вам нужно сделать только минимальное кодирование.

http://www.springsource.org/spring-integration#documentation

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