NLog基本讲解以及使用

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

参考文档

 https://www.cnblogs.com/fuchongjundream/p/3936431.html

https://blog.csdn.net/u013667895/article/details/79016059

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值