Nlog和Log4net 基本一样。 通俗讲都是记录日志的。今天先讲Nlog的使用。具体原理。。。。。,先略。
第一步:下载
通过Nuget安装NLog,(找到项目里的“引用”,右键,管理Nuget程序包,搜索Nlog, )
这步很简单。。。。。。
第二步:修改Nlog.Config
这块配置说简单也简单,说复杂也复杂, 这次先配置几个简单的。
第一种:保存到文件
<targets async="true">
<!--保存至文件-->
<target name="log_file" xsi:type="File"
fileName="${basedir}/Logs/${shortdate}/${level:uppercase=false:padding=-5}.txt"
layout="${longdate} | ${message} ${onexception:${exception:format=toString} ${newline} ${stacktrace} ${newline} {DatabaseName}" />
</targets>
第二种-输出至Debugger
<target name="debugger" xsi:type="Debugger"
layout="NLog: ${date:format=HH\:mm\:ss} | ${message}" />
第三种:输出至控制台
<target name="console" xsi:type="ColoredConsole" layout="${longdate} ${message} ${exception:format=tostring}"></target>
第四种:输出至数据库
<target name="logdatabase" xsi:type="Database" dbProvider="MySql.Data.MySqlClient"
connectionString="Server=127.0.0.1;Database=archer_test;Uid=root;Pwd=root;"
commandText="insert into logs(create_time,loglevel,callsite,massage,stacktrace,logger,machinename,appversion,processname) values (@create_time,@loglevel,@callsite,@massage,@stacktrace,@logger,@machinename,@appversion,@processname)">
<parameter name="create_time" layout="${longdate}" />
<parameter name="loglevel" layout="${level}" />
<parameter name="logger" layout="${logger}" />
<parameter name="machinename" layout="${machinename}" />
<parameter name="appversion" layout="${assembly-version}" />
<parameter name="processname" layout="${processname}" />
<parameter name="callsite" layout="${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}" />
<parameter name="massage" layout="${message}" />
<parameter name="stacktrace" layout="${stacktrace}" />
</target>
配置中有数据库连接和插入语句,根据自身情况修改。
第五种:输出至邮件
<target name="infoMail" xsi:type="Mail"
smtpServer="smtp.163.com"
smtpPort="25"
smtpAuthentication="Basic"
smtpUserName="test@163.com"
smtpPassword="password"
enableSsl="true"
addNewLines="true"
from="test@163.com"
to="temp@qq.com"
subject="Project Exception Mail"
header="*********************"
body="${longdate} | ${message} "
footer="*********************">
</target>
第六种 保存至ElasticSearch
<!--一定要加这个-->
<extensions>
<add assembly="NLog.Targets.ElasticSearch"/>
</extensions>
<!--保存至ElasticSearch-->
<target name="elastic" xsi:type="ElasticSearch" uri="http://127.0.0.1:9200" index="devlog" documentType="logevent">
<field name="LogSource" layout="WechatApi" />
<field name="LogLevel" layout="${level}" />
<field name="LogTime" layout="${longdate}" />
<field name="message" layout="${message}" />
<field name="origin" layout="${callsite}" />
<field name="stackTrace" layout="${stacktrace}" />
</target>
保存至elashticSearch 需要引用NLog.Targets.ElasticSearch.dll , 在Nuget中安装,
关于ElasticSearch, kibana的相关资料,,这里不过多描述。
第六种: 保存到文件服务器
<!--文件服务器-->
<target name="n1" xsi:type="Network" address="tcp://localhost:4001"/>
最后的Rules一定要写 ,我这里用一个做例子 :
<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="Default" level="Info" writeTo="log_file" />-->
<!--<logger name="*" minlevel="Info" writeTo="elastic" />-->
<!--<logger name="*" levels="Info" writeTo="infoMail" />-->
<!--<logger name="*" levels="Error" writeTo="log_file" />-->
<logger name="*" levels="Debug" writeTo="logdatabase" />
<!--<logger name="*" levels="Debug" writeTo="log_file" />-->
<!--
-->
<!--<logger name="*" level="Debug" writeTo="debugger" />-->
<!--
<logger name="*" level="Fatal" writeTo="console" />
<logger name="*" level="Fatal" writeTo="log_file" />
-->
<!--<logger name="*" level="Warn" writeTo="infoMail" />-->
<!--
<logger name="*" level="Warn" writeTo="log_file" />-->
</rules>
目前基本完成了所有的配置, 下面开始使用。。
NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
try
{
//直接调用
logger.Fatal("发生致命错误");
logger.Warn("警告信息");
logger.Debug("debuger");
logger.Info("info信息");
Console.ReadKey();
int s = 0;
int d = 1 / s;
}
catch (Exception ex)
{
logger.Error(ex);
}
运行,就可以根据相关的配置显示相关的log .
OVER
测试Dome 代码下载地址: https://download.csdn.net/download/qq_25042791/10830537
参考文档