Мы используем log4net и нашли в нем большую гибкость. У нас также есть собственный класс-обертка, который используется во всех наших проектах, что позволяет нам использовать статические методы для записи в определенные журналы. Log4net поставляется с одной DLL, и, конечно, наша оболочка DLL. Это легко расширить для дополнительной функциональности, теперь наш класс-оболочка позволяет нам записывать в журналы событий Windows, если / когда это необходимо.
Существует множество примеров того, как реализовать log4net, и она предоставляет множество способов записи / отправки информации журнала:
http://logging.apache.org/log4net/release/config-examples.html
Пример реализации нашей оболочки:
Log.Error("Message", this);
Log.Error("Message", Exception, this);
Log.Error("Message", Exception, Type);
Log.Info("Message", this);
Log.Warn("Message", this);