前言:
如今小伙伴们对“net core nlog”大约比较珍视,你们都想要分析一些“net core nlog”的相关知识。那么小编同时在网摘上收集了一些关于“net core nlog””的相关内容,希望你们能喜欢,同学们一起来了解一下吧!NLog是适用于各种.net平台(包括.net standard)的灵活而免费的日志记录平台。通过NLog, 可以轻松地写入多个目标。(数据库、文件、控制台), 并动态更改日志记录配置。
NLog支持结构化和传统日志记录。
NLog的特点: 高性能、易于使用、易于扩展和灵活配置
1. 安装Nlog
在vs的NuGet包管理器中直接搜Nlog,然后安装Nlog(用于系统引用Nlog.dll)和Nlog.Config(用于系统自动生成NLog.config文件)。
引用Nlog的HuGet包管理器.png
2. 配置NLog.config (非常重要)
注意看Nlog.config文件上的注释说明 (‾◡◝)
<?xml version="1.0" encoding="utf-8" ?><nlog xmlns="; xmlns:xsi="; xsi:schemaLocation=" 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 设置每条日志的布局,可参考官方说明 --> <!-- 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本身还是非常强大的,有这方面需求的朋友可以看看:
标签: #net core nlog