Подтвердить что ты не робот

Log4net/Logging - Что вы считаете полезным?

Я только начал использовать Log4Net и искал, что вы нашли полезным в ваших опытах ведения журнала.

Какие типы вещей вы считаете полезными для регистрации; что оказалось просто шумом; когда вы используете разные уровни ведения журнала (DEBUG, INFO и т.д.); у вас есть стандартный формат для каждой записи в журнале; есть ли вещи, которые вы ВСЕГДА регистрируетесь?

Любые подводные камни? Хорошие статьи о регистрации в целом?

Обновление: где вы входите? Что Аппендеры и почему?

Спасибо!

4b9b3361

Ответ 1

Я основываю свой ответ на превосходном ответе Роберта Козака, хотя я не совсем использую свой журнал таким же образом

Я использую пять типов операторов журнала:

  • DEBUG
  • INFO
  • Внимание
  • ОШИБКА
  • FATAL
Операторы

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

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

Используйте уровень WARN, если вы обнаружили восстанавливаемый, но все же неожиданный (по крайней мере, немного ожидаемый, потому что вы его поймали). Это означает, что ваше приложение МОЖЕТ находиться в неработоспособном состоянии, но вы считаете, что можете восстановить/продолжить текущий путь выполнения.

ОШИБКА предупреждает о том, когда вы поймаете неожиданное исключение. Если вы восстанавливаете/повторяете текущий метод, я предлагаю использовать WARN. Если вы отменяете/сворачиваете, используйте ОШИБКУ. Даже если ваша программа может продолжаться, ERROR означает, что вы пытались что-то сделать и были отклонены, и поэтому переходите к другим вещам.

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


Как для входа в систему. Обычно мне нравится регистрироваться в общей папке на моих серверах приложений (будьте осторожны при разрешении, чтобы они не были общедоступны), так что журналы очень легко доступны, и они всегда являются моим первым шагом для отладки. Если возможно, настройте его так, чтобы любые ошибки, которые являются ПРЕДУПРЕЖДЕНИЕ, ОШИБКА или FATAL, отправляются по электронной почте, чтобы у вас было "расширенное" предупреждение.

Приветствия

Ответ 2

  • Все исключения регистрируются на уровне ERROR на самом высоком уровне в стеке вызовов, который возможен (как правило, в обработчиках событий и т.д.).
  • Пользовательский ввод, который вызывает проблему, регистрируется на уровне WARN (поскольку это может указывать на необходимость улучшения нашего пользовательского интерфейса, чтобы лучше ориентировать пользователя).
  • "Значительные" действия регистрируются на уровне INFO (т.е. все, что связано с выставлением счетов кредитной картой клиента, запросами стороннего API и т.д.), включая данные (обычно XML-сериализованные с удаленной конфиденциальной информацией)
  • Очень подробные действия могут регистрироваться на уровне DEBUG

Мы редко используем регистрацию уровня FATAL.

Обычно мы развертываем с уровнем RollingLogFileAppender at INFO и уровнем SmtpAppender на уровне ERROR.

Ответ 3

Log4Net с Apache Chainsaw. Бензопила - это панель для просмотра сообщений журнала в реальном времени. Он может обрабатывать несколько приложений, выполнять фильтрацию "на лету" и несколько других полезных функций.

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

Ответ 4

Также существует еще одна структура ведения журнала для ASP.NET, называемая ELMAH. Хотя это не настоящая структура ведения журнала, а большая часть структуры исключений.

Прохладные функции включают в себя:

  • 0 код/​​перекомпиляция для его реализации
  • имеет веб-интерфейс ui для просмотра ошибок
  • RSS-канал для ошибок
  • может настроить его для dump-ошибок для SQL

Ответ 5

Я использую четыре типа операторов журнала:

  • DEBUG
  • INFO
  • ВНИМАНИЕ
  • ОШИБКА

Я использую DEBUG для операторов, которые я хочу проверить во время сеанса отладки. Обычно это не длится до выпуска сборки. Здесь я проверяю значение переменной или записывая вход и выход из метода.

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

ПРЕДУПРЕЖДЕНИЕ используется редко для вещей, о которых я не уверен или о возможных ошибках, или, может быть, даже о проверке исключения, которое, как мне известно, будет обработано в стеке.

Обычно я использую ERROR в Catch Block для отчета об исключении и в ExceptionHandler, который вызывается, когда никакой другой метод не обрабатывал исключение.

Ответ 6

Я обнаружил, что получаю ценные данные, настраивая проекты для использования Log4PostSharp в начале разработки. В принципе, в сочетании с движком PostSharp вы можете поместить атрибут в методы и он будет записывать все вызовы с параметрами и возвращаемыми значениями. Я установил его на уровне Debug в файле Assembly.cs, чтобы он по умолчанию регистрировал все вызовы методов, которые не являются атрибутами свойств или сеттерами.

Если он оставлен без контроля, он может получить огромное количество данных (я уверен, что я не регистрирую ничего на уровне отладки, так что его легко включать и выключать и полностью удалять из релизов, если производительность выпуск), но с хорошим просмотром журнала - я использую BareTail - вы можете очень быстро определить сложные ошибки. Это особенно хорошо при определении метода, в котором все ваши разные потоки находились в точке, возникла проблема.

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

Ответ 7

Там еще один просмотрщик журналов log4net (за исключением Apache Chainsaw), который моя компания использует в течение некоторого времени, называется "log4net Dashboard" и разрабатывается норвежской компанией (я думаю), называемой FaktNet, ее веб-сайт http://www.l4ndash.com.

Он предоставляет веб-панель управления, которая достаточно интуитивно понятна и обеспечивает хороший обзор в журнале, может использоваться со многими различными приложениями (например, с помощью скользящего файла или приложения SQL-сервера), но она не является бесплатной, поскольку Apache Chainsaw является. У них действительно есть лицензия на разработчика, которая бесплатна и позволяет использовать только локальное использование, что было бы достаточно, например, для фрилансера, который хочет следить за своими сайтами (одна панель данных размером l4n может подключаться к нескольким журнальным источникам).

FaktNet имеет различные лицензии, в зависимости от того, сколько пользователей должно иметь доступ к панели мониторинга, а их корпоративная лицензия не очень дорогая (это, по-моему, 600 долларов). Учитывая его способность доступа к нескольким журналам, он может стать важным активом для команды разработчиков, которая разрабатывает и контролирует многие веб-сайты среднего и крупного масштаба.

Ответ 8

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

Подробнее об этом в в этой статье.