Der Logger NLog ist mit über 250M Downloads (in Nuget.org) einer der Standard-Logger für .NET/C#.
Davor verwendete ich den log4net Logger.
Um NLog zu verwenden müssen zwei Nuget-Packages installiert werden:
- NLog
- NLog.Config

Danach muss die NLog.config Datei im Projekt konfiguriert werden.
Hier ist eine einfache Konfiguration um die Logs in einer Datei zu schreiben sowie diese auch in Console farbig auszugeben:

Die Konfiguration dazu:
<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoReload="true" throwExceptions="false" internalLogLevel="Off" internalLogFile="T:\MyTemp\Logs\PGH.AssemblyParser and Converter\${shortdate}.log"> <targets> <target name="coloredConsole" xsi:type="ColoredConsole" useDefaultRowHighlightingRules="false" layout="${longdate} [${pad:padding=5:inner=${level:uppercase=true}}] ${logger} - ${message}" > <highlight-row condition="level == LogLevel.Debug" foregroundColor="Green" /> <highlight-row condition="level == LogLevel.Info" foregroundColor="Blue" /> <highlight-row condition="level == LogLevel.Warn" foregroundColor="Yellow" /> <highlight-row condition="level == LogLevel.Error" foregroundColor="Red" /> <highlight-row condition="level == LogLevel.Fatal" foregroundColor="Red" backgroundColor="White" /> </target> <target name="logFile" xsi:type="File" layout="${longdate} [${pad:padding=5:inner=${level:uppercase=true}}] ${logger} - ${message}" fileName="T:\MyTemp\Logs\MyApplication\${shortdate}.log" keepFileOpen="false" encoding="utf-8" /> </targets> <rules> <!-- add your logging rules here --> <logger name="*" minlevel="Trace" writeTo="coloredConsole" /> <logger name="*" minlevel="Trace" writeTo="logFile" /> <!-- Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f" <logger name="*" minlevel="Debug" writeTo="f" /> --> </rules> </nlog>
Nun kann der Logger wie folgt im Code verwendet werden:
class Program { // Create the logger for current class ( = typeof(Program)). private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); static void Main(string[] args) { Logger.Info("Starting application from Console..."); // more code... } }