Зачем нужны логи
Очевидно, что логи делаются для разработчиков, чтобы облегчить им (нам) жизнь. Основные цели, ради которых существуют логи:
- сказать, что же делает система прямо сейчас, не прибегая к помощи отладчика, т.к. это иногда не оправдано;
- провести «расследование» обстоятельств, которые привели к определённому состоянию системы (например, падению или багу);
- проанализировать, на что тратится больше времени/ресурсов, т.е. профилирование.
Примитивный подход
Казалось бы, всё просто:
public static void Log(string message) {
File.AppendAllText("log.txt", message);
}
Зачем что-то ещё придумывать, подключать внешние библиотеки, настраивать конфиги?
На практике, оказывается, что всё не так: одного лог-файла становится уже недостаточно, возникают проблемы с многопоточностью, форматом логов, записью времени, производительностью итд.
Какие же фичи должен поддерживать хороший логгер?