Почему log4net записи могли бы пойти, “отсутствуя” в некоторых слушателях

У этого действительно есть я царапающий мою голову....

Я использовал log4net (в настоящее время версия 1.2.10) в приложении в течение некоторого времени. При добавлении новой опции к приложению я заметил, что даже при том, что Отладка log4net, Ошибка, и т.д. методы получали названные объекты от того источника журнала, не замечались консолью appender.

Проверив очевидное (как проверка не было никакой включенной фильтрации), я заметил что-то еще, что было странно. Если у меня будет больше чем один appender (например, файл журнала appender и UDP appender) затем, то appenders будет иногда видеть различные подмножества сообщений журнала. Какое подмножество, которое они видят, кажется, случайно, но обычно когда проблема происходит, они не будут видеть все сообщения из данного источника журнала.

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

[Дополнительная информация ниже добавила 19-го Jan, 2010]

Я наконец бросил хороший взгляд на объект ILog, пасуемый назад в ответ на вызов

LogManager.GetLogger(typeof (MyTypeHere));

В некоторых случаях я получаю объект ILog с Отладкой, Информацией, Предупреждением, Ошибкой и т.д. набор ко лжи. В других случаях объекту ILog установили их правильно на истинный. Так как мой код не делает ничего для управления теми флагами в случаях, когда мой код передается, "отключенные" сообщения объекта ILog из моего кода (понятно) не становятся распространенными вообще.

Я все еще не могу объяснить очевидное несоответствие между двумя appenders.

7
задан Richard J Foster 19 January 2010 в 13:36
поделиться

2 ответа

Мы регулярно используем добавления Logfile, Console и SMTP, и мы, кажется, не имеем этих проблем. При определенных условиях некоторые приложки могут потерять сообщения из-за их присущей природы. Например, Appender UDP из-за транспортного механизма не гарантируется передавать все сообщения. То же самое происходит с Appender SMTP. Если вы используете общий файл журнала, но войдите в систему из нескольких процессов, иногда файл заблокирован другим процессом (это обычно бросает исключение, но может быть поймано где-то в вашем коде), поэтому убедитесь, что установите минимальное свойство блокировки в теме. Кроме того, приложения могут быть зафиксированы, поэтому, если есть сбой процесса, Log4Net может не иметь шансов вымыть буферические данные.

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

1
ответ дан 7 December 2019 в 18:43
поделиться

Я правильно понимаю, что некоторые сообщения, которые обычно регистрируются успешно внезапно, останавливаются (зарегистрированные) в какой-то момент? Если это так, то я бы предложил включить внутреннее ведение журнала Log4Net. Альтернатива отладка проблемы с кодом LOG4NET (с вашей проблемой я предложил взломать где-то вокруг метода CallAppenders в классе Logger. Он скажет, какие приложения будут фактически призвать для события ведения журнала).

Если некоторые сообщения последовательно не регистрируются, я бы посмотрел на конфигурацию Log4net. Проверьте наличие на любых уровнях / пороговых значениях и более важно, если вы используете Loggers, убедитесь, что их имена и убедитесь, что префикс того, что вы размещаете в вызова LogManager.getLogger (...), совпадают, соответствуют журналам имени на вашем конфиге.

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

1
ответ дан 7 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: