Nlog的简单使用

Nlog是.net平台下的开源日志组件,相当于log4net用法配置更简单。
用途可以将日志输出到数据库,文本文件,控制台等。
首先引用NLog.dll,顺便也将NLog.xml丢到运行目录
准备工作完后,接下来的工作就非常快
添加NLog.config将设置为始终复制到运行目录下,具体配置如下

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
 3       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 4   <!-- 定义参数:
 5     ${basedir}:系统路径
 6     ${shortdate}:短日期 yyyy-MM-dd(例:2013-01-31)
 7     ${basedir}/Logs/${shortdate}:即为在系统路径下的Logs文件夹下面的日期文件夹-->
 8   <variable name="logDirectory" value="${basedir}/Logs/${shortdate}"/>
 9   <targets>
10     <!-- 定义输出模板:
11         type="File":这个记录方式为文件类型
12         fileName="${logDirectory}/All.log":表示输出到文件All.log中
13         layout="...":输出文件中错误的显示格式
14         ${logDirectory}:为上述定义的路径
15         ${longdate}:输出长日期 yyyy-MM-dd HH:mm:ss.ffff(例:2013-01-31 14:49:21.2120)
16         ${level}:错误等级(由低到高为Trace,Debug,Info,Warn,Error,Fatal)
17         ${newline}:输出 新的一行
18         ${stacktrace}:输出 堆栈信息
19         ${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}:输出 命名空间.类名.方法名(文件路径:行号)
20         ${message}:输出错误信息-->
21     <target xsi:type="File" name="AllFile" fileName="${logDirectory}/All.log"
22             layout="${longdate}        ■${level}${newline}    ▲${stacktrace}${newline}    ◇${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}${newline}    ◆${message}${newline}${newline}***************************************************************************" >
23     </target>
24     <!-- 定义输出到MySQL中:
25         type="Database":这个记录方式是数据库
26         dbProvider="MySql.Data.MySqlClient":使用MySQL的连接方式
27         connectionString="Server=XXX.XXX.XXX.XXX;Database=ProjectLogDB;Uid=XXX;Pwd=XXX;":数据库的连接字符串
28         commandText="insert into Logs(CreateDate,LogLevel,CallSite,Massage,StackTrace) values (@CreateDate,@LogLevel,@CallSite,@Massage,@StackTrace)":insert语句
29         <parameter name="CreateDate" layout="${longdate}" />对应到insert语句的参数的值-->
30     <target xsi:type="Database" name="AllDatabase" dbProvider="MySql.Data.MySqlClient"
31                     connectionString="Server=XXX.XXX.XXX.XXX;Database=ProjectLogDB;Uid=XXX;Pwd=XXX;"
32                     commandText="insert into Logs(CreateDate,LogLevel,CallSite,Massage,StackTrace) values (@CreateDate,@LogLevel,@CallSite,@Massage,@StackTrace)">
33       <parameter name="CreateDate" layout="${longdate}" />
34       <parameter name="LogLevel" layout="${level}" />
35       <parameter name="CallSite" layout="${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}" />
36       <parameter name="Massage" layout="${message}" />
37       <parameter name="StackTrace" layout="${stacktrace}" />
38     </target>
39   </targets>
40   <rules>
41     <!-- 定义输出日志:
42         name="*":记录所有信息
43         minlevel="Trace":记录的最低错误级别为Trace
44         writeTo="AllFile":日志写入AllFile的target中-->
45     <logger name="*" minlevel="Trace" writeTo="AllFile,AllDatabase" />
46   </rules>
47 </nlog>
View Code

调用如下

public static Logger log = LogManager.GetLogger("Program");
static void Main(string[] args)
{
log.Trace("Program.Main do someting...");
log.Debug("Debug99999999999");
log.Info("Info------------");

}

原文地址:https://www.cnblogs.com/JaggerMan/p/4884504.html