1.下载NLog包,普通项目只需要下第一个,Asp.Net需要额外下载第2个包
2.添加NLog配置文件,并配置信息,可以自己制定规则
注:NLog 启动时会在某些标准路径查找配置文件(如:应用程序目录下的NLog.config 文件)进行自动配置,如果想省事可以直接使用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="nlog-internal.log">
<variable name="dir" value="Log/${shortdate}"/>
<variable name="layout" value="●${longDate} ${pad:padding=5:inner=${level:uppercase=true}} [${threadid}] - ${message} ${exception:format=tostring}"/>
<targets>
<default-target-parameters xsi:type="File"
archiveAboveSize="30720000"
archiveNumbering="Sequence"
encoding="utf-8"
layout="${layout}"/>
<target name="console" xsi:type="Console" layout="${layout}"/>
<target name="default" xsi:type="File"
fileName="${dir}/default.log"
archiveFileName="${dir}/default.{#}.log"/>
<target name="Control" xsi:type="File"
fileName="${dir}/Control.log"
archiveFileName="${dir}/Control.{#}.log"/>
<target name="Monitoring" xsi:type="File"
fileName="${dir}/Monitoring.log"
archiveFileName="${dir}/Monitoring.{#}.log"/>
</targets>
<rules>
<logger name="Test.Demo.Controllers.*" minlevel="Trace" writeTo="Control"/>
<logger name="Test.Demo.Controllers.*" minlevel="Debug" writeTo="console"/>
<logger name="Test.Demo.Controllers.*" final="true"/>
<logger name="Test.Demo.Controllers.MonitoringController" minlevel="Trace" writeTo="Monitoring"/>
<logger name="Test.Demo.Controllers.MonitoringController" minlevel="Debug" writeTo="console"/>
<logger name="Test.Demo.Controllers.MonitoringController" final="true"/>
<!--默认日志-->
<logger name="*" minlevel="Debug" writeTo="console,default" />
</rules>
</nlog>
3.依赖注入(图1),如果普通项目可以直接读取配置文件(图2)
LogManager.Configuration= new XmlLoggingConfiguration(AppDomain.CurrentDomain.BaseDirectory.ToString() + "/NLog.config");
4.使用日志
public readonly Logger Logger = LogManager.GetCurrentClassLogger();
Logger.Info($"xxx");