NLog是一个简单灵活的.NET日志记录类库,且配置方式非常简单。在项目中使用Nlog记录日志,能节省我们大量的时间

一 获取方式

第一种 在VS》工具》NUGET包管理器》程序包管理控制台输入安装nlog命令: Install-Package NLog.Config

第二种 在VS需要添加NLOG的项目上右键》管理NuGet程序包,搜索安装Nlog 和Nlog configuration

第一种和第二种方式本质是一样的都是使用NuGet管理器安装第三方的程序包

第三种 GitHub上NLog的地址https://github.com/NLog/NLog/  Nlog的发布版地址https://github.com/NLog/NLog/releases/  这种方式,可以下载源码,自己生产Dll文件,添加引用即可,尤其有特殊要求的,可以直接修改源码然后发布

一般项目使用第一种和第二种比较多,方便、简洁


二 配置文件


支持多种配置形式:

1 NLog.config 这个是比较好的一个形式,也比较推荐使用的,网上绝大部分都是用这个形式的,就在程序目录下。

2 可以设置后缀为.nlog的配置文件,这个就保存在程序目录下,如果是web项目里跟web.config同级目录(程序名.exe.nlog / web.nlog)。

3 直接在使用应用程序配置文件或者web的配置文件(app.config / web.config) 不推荐,个人认为影响文件内容的结构,显得比较乱。


三 标签属性介绍


<nlog>属性

autoReload 修改配置文件后是否允许自动加载无须重启程序

throwExceptions 内部日志系统抛出异常

internalLogLevel 可选Trace|Debug|Info|Warn|Error|Fatal决定内部日志的级别 Off 关闭

internalLogFile 把内部的调试和异常信息都写入指定文件里

建议正式发布版throwExceptions的值设为“false”,这样由于日志引发的问题不至于导致应用程序的崩溃。


主要配置targets和rules:


<targets /> - 定义日志的目标/输出,子标签是<target>


<target />属性

name:自定义该target的名字,可供rule规则里使用

type: 定义类型,官方提供的可选类型(不过常用的还是数据库/文件/邮箱/控制台这几种):

Chainsaw|ColoredConsole |Console |Database|Debug|Debugger|EventLog|File|LogReceiverService|Mail|Memory|MethodCall|Network |NLogViewer|Null |OutputDebugString|PerfCounter|Trace|WebService

layouts 用来规定布局样式,语法“${属性}”,可以把上下文信息插入到日志中,内容较多,简要说明几个常用的,要查看全部内容,请查阅参考文档

  ${all-event-properties}事件日志上下文

  ${appdomain}当前应用程序域

  ${assembly-version}应用程序

  ${basedir}应用程序域的基本目录。

  ${level}级别。

  ${longdate}日期和时间的格式分类yyyy-MM-dd HH:mm:ss.ffff。

  ${machinename}计算机名称

  ${message}消息

  ${newline}文字换行

  ${nlogdir}nlog.dll目录。

  ${processid}当前进程标识符

  ${processinfo}运行信息

  ${processname}当前进程的名称。

  ${tempdir}临时目录中。

  ${threadid}当前线程的标识符。

  ${time}24小时格式HH:MM:ss.mmm。

  ${windows-identity}Windows线程标识信息(用户名)


<rules /> - 定义日志的路由规则,子标签是<logger>


<logger>属性

name - 记录者的名字

minlevel - 最低级别

maxlevel - 最高级别

level - 单一日志级别

levels - 一系列日志级别,由逗号分隔

writeTo - 规则匹配时日志应该被写入的一系列目标,由逗号分隔


<variable>定义参数,使用方式

 <variable name="variable1" value="${basedir}/logs"/>

 <targets>      

 <target name="File" xsi:type="File" fileName="${variable1}/${shortdate}.txt"/>  

 </targets>


四 调用方法


实例化对象

    Logger logger = LogManager.GetCurrentClassLogger();

调用不同的级别输出方式,对象名.级别("信息"):

    logger.Debug("Debug Message");

    logger.Error("Error Message");


五 常用的日志输出模板

数据库输出

   <target xsi:type="Database" name="模板名称"

             dbUserName="数据库用户名"

             dbPassword="数据库密码"

             dbHost="主机"

             dbDatabase="数据库名称"

             dbProvider="数据库链接程序"

             keepConnection="true保持连接false不保持连接"

             commandText="数据库操作字符串"

             commandType="Text">

      <parameter name="数据库操作字符串中的填充对象" layout="${event-context:item=Id}" />

    </target>

文件输出

    <target xsi:type="File"  name="模板名称"

            fileName="${basedir}/路径/${shortdate}.log"

            layout="内容布局"/>

多文件输出

    <target xsi:type="File" name="模板名称"

        layout="内容布局"

        fileName="${basedir}/路径/logfile.txt"

        archiveFileName="${basedir}/路径/log.{######}.txt"

        archiveAboveSize="单个文件大小"

        archiveNumbering="Sequence"

        concurrentWrites="true"

        keepFileOpen="false"

        encoding="utf-8" />

邮箱输出

  <target xsi:type="Mail"  name="模板名称"

        from="邮箱名"

        smtpUserName="发送邮箱名" smtpPassword="邮箱密码"

        to="接收邮箱名"

        smtpServer="邮箱服务地址" smtpPort="25" smtpAuthentication="Basic"

        html="true"

        enableSsl="false"

        subject="${message}"

        header="******************************************"

        addNewLines="true"

        body="${br} ${longdate} ${br} ${level} ${br} ${callsite} ${br} ${message} ${br} ${exception:format=Message, Type, ShortType, ToString, Method, StackTrace}${br}"

        layout="${br} ${longdate} ${br} ${level} ${br} ${callsite} ${br} ${message} ${br} ${exception:format=Message, Type, ShortType, ToString, Method, StackTrace}${br}"

        footer="******************************************"/>

 

官方参考:

https://github.com/nlog/NLog/wiki/Layout%20Renderers

https://github.com/nlog/NLog/wiki/Targets

https://github.com/NLog/NLog/releases/

http://nlog-project.org/
 

文章信息

创建时间
2023-12-11
作者
郭铭心
是否所有人可见
所有人可见
最后修改日期
2023-12-11
点击数
130
标签