log4net - это хорошая практика создавать много регистраторов для целей отслеживания? - PullRequest
1 голос
/ 13 апреля 2011

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

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

Я мог бы использовать один регистратор и закодировать идентификатор сообщения в самом сообщении:

  • Logger: "MessageLivetime" Message: "SomeId | message text")

Однако я подумал, что было бы разумно, если бы я создал регистратор для каждого сообщения:

  • Logger: "MessageLivetime.SomeId" Message: "message text")

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

Может ли кто-то с большим пониманием log4net дать мне подсказку, если этот подход является жизнеспособным?

Я уженайденные свойства контекста.Они будут лучшим вариантом?А как мне записать в контекст события?

1 Ответ

5 голосов
/ 13 апреля 2011

Я не вижу никакой выгоды в том, чтобы включать идентификатор в самом регистраторе.Мне кажется, что это неправильно.

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

...