首先我们需要在Nuget中安装Nlog和Nlog-Schema。
添加配置文件:NLog.config
<?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="d:\nlog\nlog-internal.log"><!-- optional, add some variableshttps://github.com/nlog/NLog/wiki/Configuration-file#variables--><!--<variable name="myvar" value="myvalue"/>--><variable name="logDir" value="${basedir}/nlog"/><variable name="logFileName" value="${date:format=yyyyMMdd}.txt"/><variable name="logArchiveFileName" value="${date:format=yyyyMMdd}_{#}.txt"/><variable name="logLayout" value="${date:format=yyyy-MM-dd HH\:mm\:ss.fff} [${level}] ${message}"/><!--See https://github.com/nlog/nlog/wiki/Configuration-filefor information on customizing logging rules and outputs.--><targets><!--add your targets hereSee https://github.com/nlog/NLog/wiki/Targets for possible targets.See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.--><!--Write events to a file with the date in the filename.<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"layout="${longdate} ${uppercase:${level}} ${message}" />--><target xsi:type="File" name="info"layout="${logLayout}"fileName="${logDir}/info/${logFileName}"archiveFileName="${logDir}/info/${logArchiveFileName}"archiveAboveSize="10485760"archiveNumbering="Sequence"maxArchiveFiles="100"concurrentWrites="true"keepFileOpen="true"openFileCacheTimeout="30"encoding="UTF-8" /><target xsi:type="File" name="debug"layout="${logLayout}"fileName="${logDir}/debug/${logFileName}"archiveFileName="${logDir}/debug/${logArchiveFileName}"archiveAboveSize="10485760"archiveNumbering="Sequence"maxArchiveFiles="100"concurrentWrites="true"keepFileOpen="true"openFileCacheTimeout="30"encoding="UTF-8" /><target xsi:type="File" name="error"layout="${logLayout}"fileName="${logDir}/error/${logFileName}"archiveFileName="${logDir}/error/${logArchiveFileName}"archiveAboveSize="10485760"archiveNumbering="Sequence"maxArchiveFiles="100"concurrentWrites="true"keepFileOpen="true"openFileCacheTimeout="30"encoding="UTF-8" /><target xsi:type="File" name="warn"layout="${logLayout}"fileName="${logDir}/warn/${logFileName}"archiveFileName="${logDir}/warn/${logArchiveFileName}"archiveAboveSize="10485760"archiveNumbering="Sequence"maxArchiveFiles="100"concurrentWrites="true"keepFileOpen="true"openFileCacheTimeout="30"encoding="UTF-8" /></targets><rules><!-- add your logging rules here --><!--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" />--><logger name="*" minlevel="Info" maxlevel="Info" writeTo="info" /><logger name="*" minlevel="Debug" maxlevel="Debug" writeTo="debug" /><logger name="*" minlevel="Error" maxlevel="Error" writeTo="error" /><logger name="*" minlevel="Warn" maxlevel="Warn" writeTo="warn" /></rules>
</nlog>
定义了5种log类型Debug,Info,Debug,Error,Warn,详细配置可以自己定义。
定义一个常用的log类
public class NLogHelper{private static Logger _log = NLog.LogManager.GetCurrentClassLogger();/// <summary>/// Debug日志/// </summary>/// <param name="log"></param>public static void Debug(string log){_log.Debug(log);}/// <summary>/// Error日志/// </summary>/// <param name="log"></param>public static void Error(string log){_log.Error(log);}/// <summary>/// Warn日志/// </summary>/// <param name="log"></param>public static void Warn(string log){_log.Warn(log);}/// <summary>/// Info日志/// </summary>/// <param name="log"></param>public static void Info(string log){_log.Info(log);}/// <summary>/// 详细异常日志/// </summary>/// <param name="ex"></param>public static void Exception_Error(Exception ex){try{if (ex != null){StringBuilder strBuilder = new StringBuilder();strBuilder.Append("【异常日志消息】");strBuilder.AppendLine(ex.Message);strBuilder.Append("【异常日志Trace】");strBuilder.AppendLine(ex.StackTrace);strBuilder.Append("【异常日志全部】");strBuilder.Append(ex.ToString());_log.Error(strBuilder.ToString());}}catch (Exception){}}}
调用代码
NLogHelper.Info($"系统正在运行中...");