接触.net项目的同志们都清楚,最初在项目中记录日志常用的是log4net日志组件,随着.net框架的不对优化升级,最近新流行的日志框架nlog,下面我就对nlog组件说说自己的认知:
下载
通过Nuget安装NLog
配置
在项目根目录下新建一个NLog.config(在Nuget包中也可以下载NLog.config包,下载默认的位置是C盘,可能和你的工程不在同一个文件夹,不建议使用),基本目录结构:targets下面配置日志输出目标及相关参数,rules下面配置目标输出规则:
NLog.config
记得在NLog.config的属性中设置 Copy to Output Directory: Copy always,作用是每次重新生成解决方案的时候都会将改配置文件复制的本地目录,否则本地找不到配置文件无法将日志记录到文件中:
完整的配置文件如下,日志配置文件尽量单独创建一个文件:
NLog.config
如在根节点(nlog)配置 internalLogLevel, internalLogFile,可以查看NLog输出日志时的内部信息,比如你配置文件有错误,很有帮助,不过项目发布后还是关闭比较好,以免影响效率;
在target外面罩了一个 并且xsi:type为 AsyncWrapper,即表示这条 target 将异步输出,这里我将文件和数据库日志异步输出;
db target内指定了数据库连接字符串 connectionString,SQL语句,SQL参数,还可以指定数据库/表创建和删除的脚本(推荐看NLog源码示例,这里不介绍),同时我们自定义了2个参数 action和amount;
target参数里有些是NLog内置参数,比如message,level,date,longdate,exception,stacktrace等,NLog在输出时会自动赋值;
layout设置了每条日志的格式;
在rules节点,我们分别指定了三个target输出日志的级别,NLog 用于输出日志的级别包括:Trace,Debug,Info,Warn,Error,Fatal,可以设置 minlevel设置最小级别,也可以用 levels定义你所有需要的级别(多个用逗号分隔)。
event-context代表自定义的参数。
路由规则(Rules)
区域定义了日志的路由规则。每一个路由表项就是一个元素。有以下属性:
name - 日志源/记录者的名字 (允许使用通配符*)
minlevel - 该规则所匹配日志范围的最低级别
maxlevel - 该规则所匹配日志范围的最高级别
level - 该规则所匹配的单一日志级别
levels - 该规则所匹配的一系列日志级别,由逗号分隔。
writeTo - 规则匹配时日志应该被写入的一系列目标,由逗号分隔。
final - 标记当前规则为最后一个规则。其后的规则即时匹配也不会被运行
封装
对NLog.config的Logger进行简单封装:
Logger
对操作类型进行简单封装,也可以自定义:
OperationType
自定义类,主要用于绑定数据:
OperatorLogModel
创建数据库表,字段可以自定义,此处用的是SQL Server:
[dbo].[OperatorLog]
引用日志如下:
Program
数据库插入的操作日志结果如下:
文件中记录的日志如下:
以上就是NLog日志组件的简单封装,欢迎纠错!!!
https://www.cnblogs.com/yiliukejich0614-1234/p/9914376.html