网站首页 > 技术教程 正文
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="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
猜你喜欢
- 2024-10-27 NET 6 NLog教程与使用 .net nlog
- 2024-10-27 .NET 远程日志组件 Jack.RemoteLog
- 2024-10-27 如何在企业中轻松地管理群聊(上) 企业群管理规章制度
- 2024-10-27 在 ASP.NET Core 中使用 Serilog 使用 Fluentd 将日志写入 Elasticsearch
- 2024-10-27 asp.net如何添加日志NLog aspnet日历控件
- 2024-10-27 Asp.Net Core中使用NLog记录日志 netcore日志框架对比
- 2024-10-27 EvnetLog Analyzer作为一款日志管理软件能给企业带来哪些帮助?
- 2024-10-27 C# .NET 6 校园图书管理系统:第六章 .Net6之NLog日志的配置与使用
- 2024-10-27 ASP.NET Core:ASP.NET Core中使用NLog记录日志
- 2024-10-27 如何定制.NET6.0的日志记录 .net怎么记录日志
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)