Вход в многоуровневое приложение - PullRequest
1 голос
/ 16 февраля 2011

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

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

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

заранее спасибо ...

Ответы [ 2 ]

5 голосов
/ 21 февраля 2011

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

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

3 голосов
/ 21 февраля 2011

Ниже приведен один вопрос SO, который пытается документировать некоторые рекомендации по ведению журнала: Рекомендации по ведению журнала

Некоторые общие темы:

Вероятно, наиболее распространенной практикой ведения журналов является извлечение регистратора каждого типа на основе этого типа , например:

class MyClass
{ 
  private static readonly Logger logger = LogManager.GetCurrentClassLogger();

  public void DoSomething()
  {
    logger.Info("Doing something");
  }
}

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

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

Надеюсь, это поможет.

...