快捷搜索:  汽车  科技

netcore学习路径,Core下NLog日志框架使用入门

netcore学习路径,Core下NLog日志框架使用入门学习资料: 注意看Nlog.config文件上的注释说明 (‾◡◝)<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoReload="true" throwExceptions="false" t

NLog是适用于各种.net平台(包括.net standard)的灵活而免费的日志记录平台。通过NLog 可以轻松地写入多个目标。(数据库、文件、控制台) 并动态更改日志记录配置。
NLog支持结构化和传统日志记录。

NLog的特点: 高性能、易于使用、易于扩展和灵活配置

1. 安装Nlog

在vs的NuGet包管理器中直接搜Nlog,然后安装Nlog(用于系统引用Nlog.dll)和Nlog.Config(用于系统自动生成NLog.config文件)。

netcore学习路径,Core下NLog日志框架使用入门(1)

引用Nlog的HuGet包管理器.png

2. 配置NLog.config (非常重要)

注意看Nlog.config文件上的注释说明 (‾◡◝)

<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoReload="true" throwExceptions="false" throwConfigExceptions="true" internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> <!--autoReload 自动重新加载--> <!--throwExceptions 抛出异常--> <!--throwConfigExceptions="true" NLog 在配置文件错误的情况下抛出异常--> <!--在根节点(nlog)配置 internalLogLevel internalLogFile,可以查看NLog输出日志时的内部信息,比如你配置文件有错误,很有帮助,不过项目发布后还是关闭比较好,以免影响效率;--> <targets> <!--target参数里有些是NLog内置参数,比如message level date longdate exception stacktrace(消息,级别,日期,长日期,异常,堆栈跟踪)等,NLog在输出时会自动赋值;--> <!--xsi:type="AsyncWrapper" 表示这条 target 将异步输出--> <!--queueLimit="5000" 队列限制5000--> <!--overflowAction="Discard" 这个不知道干啥的(⊙_⊙)?猜测是上面队列超过5000之后的就丢弃--> <!--layout 设置每条日志的布局 可参考官方说明 https://nlog-project.org/config/?tab=layout-renderers --> <!-- 1.将日志写入文件--> <target name="Hello_File" xsi:type="AsyncWrapper" queueLimit="5000" overflowAction="Discard"> <target xsi:type="File" fileName="${currentdir}/logs/Hello_${shortdate}_${processid}_${threadid}.log" layout="${date}_${processid}_${threadid} ${level:uppercase=true} ${event-context:item=Action} ${message} ${event-context:item=Amount} ${stacktrace}" /> </target> <target name="Hi_File" xsi:type="AsyncWrapper" queueLimit="5000" overflowAction="Discard"> <target xsi:type="File" fileName="${currentdir}/logs/Hi_${shortdate}_${processid}_${threadid}.log" layout="${date}_${processid}_${threadid} ${level:uppercase=true} ${event-context:item=Action} ${message} ${event-context:item=Amount} ${stacktrace}" /> </target> <!-- 2.将日志消息写入Visual Studio输出--> <target name="debugger" xsi:type="Debugger" layout="NLog: ${date:format=yyyy-MM-dd HH\:mm\:ss} | ${level:uppercase=true:padding=-5} | ${message}" /> <!-- 3.将日志消息写入控制台输出--> <target name="console" xsi:type="Console" layout="NLog: ${date:format=yyyy-MM-dd HH\:mm\:ss} | ${level:uppercase=true:padding=-5} | ${message}"/> </targets> <rules> <!--在rules节点,指定四个target输出日志的级别--> <!--TRACE DEBUG INFO WARN ERROR FATAL /(小级别) 跟踪、调试、信息、警告、错误、致命 (大级别) --> <!--name - 日志源/记录者的名字 (允许使用通配符*) C#调用的时候 LogManager.GetLogger("这里就是name值") minlevel - 该规则所匹配日志范围的最小级别 maxlevel - 该规则所匹配日志范围的最大级别 level - 该规则所匹配的单一日志级别 levels - 该规则所匹配的一系列日志级别,由逗号分隔。 writeTo - 规则匹配时日志应该被写入的一系列目标,由逗号分隔。 final - 标记当前规则为最后一个规则。其后的规则即时匹配也不会被运行。--> <logger name="Hello_Nlog" minlevel="Info" writeTo="Hello_File" /> <logger name="Hi_Nlog" minlevel="Info" writeTo="Hi_File" /> <logger name="*" minlevel="Trace" writeTo="debugger console" /> </rules> </nlog> 3. 调用Nlog

个人觉得多用 LogManager.GetLogger() 这个方法吧

// 1.GetCurrentClassLogger 获取具有当前类名称的日志记录器。 // 这是一种运行缓慢的方法。确保你不是在循环中做这个。 private static Logger logger = LogManager.GetCurrentClassLogger(); logger.Fatal("2333--Fatal致命"); logger.Error("2333--Error错误"); logger.Warn("2333--Warn警告"); logger.Info("2333--Info信息"); // 2.GetLogger 获取指定的命名日志程序。 private static Logger logHi = LogManager.GetLogger("Hi_Nlog"); logHi.Debug("Hi Nlog--Fatal致命"); logHi.Fatal("Hi Nlog--Fatal致命"); logHi.Error("Hi Nlog--Error错误"); logHi.Warn("Hi Nlog--Warn警告"); logHi.Info("Hi Nlog--Info信息"); private static Logger logHello = LogManager.GetLogger("Hello_Nlog"); logHello.Info("Hello Nlog--Info信息"); 第三方查看工具

和log4net一样,NLog也是被一些第三方log查看工具所支持的,我这里就搜索到了两个:Sentinel和 Harvester 。我用这些查看工具的地方不太多,没有具体去研究它们。不过NLog是支持DB输出的,感觉输出到DB中后用SQL查询要更加方便而强大些,就是实时性差些。

学习资料:

本文这里只是方便NLOG快速入门,仍属于管中窥豹阶段,NLOG本身还是非常强大的,有这方面需求的朋友可以看看:

http://www.cnblogs.com/dflying/category/78087.html

猜您喜欢: