Я всегда рассматриваю логирование с самого начала.
Во-первых, необходимо решить, какую среду ведения журналов использовать, но обычно это быстрый выбор. Я лично часто использую log4net, что означает, что каждый класс использует статический LogManager.GetLogger для получения экземпляра регистратора. Фактическое поведение каждого вызова журнала затем определяется в конфигурации (где я должен регистрироваться тоже, на каком уровне я должен войти, и т. Д.).
Однако, что более важно, вы должны думать о , что требует регистрации , когда вы фактически разрабатываете свое приложение. Не существует момента, когда вы более настроены на свой код, чем когда вы его пишете, и вы, вероятно, лучше представляете себе, что нужно регистрировать, чем в любое другое время. Гораздо проще ретроспективно удалить чрезмерно подробное ведение журнала, которое вам не нужно, и добавить добавление ведения журнала, которое должно быть там.
Так что да - всегда думайте о регистрации, когда вы запускаете свое приложение, не пытайтесь установить его заново, если можете помочь.
[РЕДАКТИРОВАТЬ: В ответ на ваш вопрос о том, как вводить]
Возможно, самый простой подход (при условии, что вы не используете контейнер IoC) - это пойти по пути внедрения свойства или конструктора. Лично я предпочитаю последнее для такого рода вещей, поэтому я бы хотел получить что-то подобное для log4net:
public class MyClass
{
private readonly ILog _logger;
// usually I don't supply a logger directly,
// hence I let this ctor get a logger from the log manager.
public MyClass() : this (LogManager.GetLogger(typeof(MyClass)))
{
}
// this ctor only gets called directly if I want to mock out logging
public MyClass(ILog logger)
{
_logger = logger;
}
}