Регистрация подмножества сообщений по контексту - PullRequest
1 голос
/ 01 октября 2009

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

Есть ли разумный способ управления журналированием (Primarilly на Java, но также интересующийся .Net), который позволил бы мне совершать только подмножество вещей, пока я работаю над определенной частью функциональности, но позволяю записывать все в другое время.

Я рассмотрел маркировку операторов журнала, которые меня интересуют, и их поиск, или упаковку библиотеки logger (log4j / log4net) в класс, который позволяет мне задавать интересующий меня контекст, и только совершить это.

Есть ли стандартный способ сделать это?

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

1 Ответ

3 голосов
/ 02 октября 2009

Ключ к управлению многословием в различных частях вашего приложения при использовании log4j / log4net заключается в правильном присвоении имен вашим регистраторам. Обычно принято называть их так же, как и полное имя класса, к которому они относятся, но вы можете использовать любые произвольные имена, какие захотите. Имя регистратора - это просто иерархическое пунктирное пространство имен, которое вы, как разработчик, можете определить по своему усмотрению.

Как только области в вашем приложении определены (каждый узел в иерархии пространства имен является «областью»), вы можете настроить детализацию для каждой области и получить очень подробные сообщения уровня DEBUG для области, на которую вы фокусируете в то время как только пропускает, скажем, сообщения уровня ERROR из других областей.

Вы не сказали много о интересующем вас контексте, но как в log4j, так и в log4net вы можете определить свойства, которые добавляются в LoggingEvent экземпляры. Вы можете использовать существующие классы Filter или создавать специальные классы Filter, которые пропускают события или не зависят от их свойств. Затем вы настраиваете свои фильтры в конфигурации log4j / log4net, и тогда вы должны быть в состоянии быть очень точным в отношении того, какая информация журналирования выводится из определенной области вашего приложения.

Примечание. Для использования фильтров с log4j для конфигурации необходимо использовать XML, а не файл .properties.

...