本文共 3325 字,大约阅读时间需要 11 分钟。
NLog详解
展开
NLog是一个简单灵活的.NET日志记录类库,NLog的API非常类似于log4net,且配置方式非常简单。通过使用NLog,我们可以在任何一种.NET语言中输出带有上下文的调试信息,根据项目需求配置署出格式和输出目标的规则。
NLog使用路由进行配置,但log4net却使用层次性的appender配置,这样就让NLog的配置文件非常容易阅读,并便于今后维护。
支持多种形式输出日志:文本文件 系统日志 数据库 控制台 邮箱 等
获取方式
1获取该类:
第一种 在nuget控制台输入安装nlog命令: Install-Package NLog.Config
第二种 在nuget程序包管理界面上,搜索安装Nlog 和Nlog configuration,这样会自动生成一个config文件,这样和程序或者web自己的config区分开方便日后使用管理,互不影响
第三种 GitHub 上https://github.com/NLog/NLog/ https://github.com/NLog/NLog/releases/
配置文件
支持多种配置形式:
1直接在使用应用程序配置文件或者web的配置文件(app.config / web.config)
2可以设置后缀为.nlog的配置文件,这个就保存在程序目录下,如果是web项目里跟web.config同级目录(程序名.exe.nlog / web.nlog)
3 NLog.config 这个是比较好的一个形式,也比较推荐使用的,网上绝大部分都是用这个形式的.就在程序目录下.
4 使用NLog.dll.nlog ,这个和NLog.dll在同一级目录内
我这里在app.config里配置数据库加密串,NLog.config在安装时自动生成 ,比其他的配置简单
配置targets和rules
- 定义日志的目标/输出,下级是
- 定义日志的路由规则,下级是
标签解读
nlog标签
autoReload 修改配置文件后是否允许自动加载无须重启程序throwExceptions 内部日志系统抛出异常internalLogLevel 可选Trace|Debug|Info|Warn|Error|Fatal决定内部日志的级别 Off 关闭internalLogFile 把内部的调试和异常信息都写入指定文件里建议throwExceptions的值设为“false”,这样由于日志引发的问题不至于导致应用程序的崩溃。
targets标签
区域定义了日志的目标或者说输出 ,在这里可以按需设置文件名称和格式,输出方式。
name:自定义该target的名字,可供rule规则里使用
type: 定义类型,官方提供的可选类型有:
Chainsaw|ColoredConsole |Console |Database|Debug|Debugger|EventLog|File|LogReceiverService|Mail|Memory|MethodCall|Network |NLogViewer|Null |OutputDebugString|PerfCounter|Trace|WebService
不过常用的还是 File \Database \Colored Console\ Mail\Network
layouts 用来规定布局样式,语法“${属性}”,可以把上下文信息插入到日志中,官方提供的可以用的属性见文末附录
rules标签
各种规则配置在logger子标签里
name - 记录者的名字minlevel - 最低级别maxlevel - 最高级别level - 单一日志级别levels - 一系列日志级别,由逗号分隔。writeTo - 规则匹配时日志应该被写入的一系列目标,由逗号分隔。
variable标签
变量定义
调用方法
1 添加引用 using NLog;
2实例化 private Logger logger = LogManager.GetCurrentClassLogger();
3调用:
logger.Trace("Trace Message"); logger.Debug("Debug Message"); logger.Info("Info Message"); logger.Error("Error Message"); logger.Fatal("Fatal Message");
五 效果举例
1 配置输出到文件:
效果:
附录:layouts 属性
${activityid} | 将其置入日志System.Diagnostics trace |
---|---|
${all-event-properties} | 事件日志上下文 |
${appdomain} | 当前应用程序域 |
${assembly-version} | 应用程序 |
${basedir} | 应用程序域的基本目录。 |
${callsite} | (类名称、方法名称和相关信息的源信息)。 |
${callsite-linenumber} | 调用类的 |
${counter} | 数值 |
${date} | 当前日期和时间。 |
${document-uri} | 用于Silverlight应用。 |
${environment} | 环境变量 |
${event-properties} | |
${exception} | exception信息 |
${file-contents} | 显示指定文件的内容 |
${gc} | 垃圾收集器 |
${gdc} | 诊断上下文 |
${guid} | GUID |
${identity} | 线程标识信息 |
${install-context} | 安装参数 |
${level} | 级别。 |
${literal} | |
${log4jxmlevent} | XML事件描述 |
${logger} | 记录器的名字 |
${longdate} | 日期和时间的格式分类yyyy-MM-dd HH:mm:ss.ffff。 |
${machinename} | 名称 |
${mdc} | 映射诊断 |
${mdlc} | 异步映射诊断上下文 |
${message} | 消息 |
${ndc} | 线程结构 |
${ndlc} | 异步线程 |
${newline} | 文字换行 |
${nlogdir} | nlog.dll目录。 |
${performancecounter} | 述性能计数器。 |
${processid} | 当前进程标识符 |
${processinfo} | 运行信息 |
${processname} | 当前进程的名称。 |
${processtime} | 该时间过程中格式HH:MM:ss.mmm。 |
${qpc} | 高精度定时器,基于返回的值从queryperformancecounter(任选地)转换为秒。 |
${registry} | 从注册表中的值。 |
${sequenceid} | ID |
${shortdate} | 短时间 格式YYYY-MM-DD。 |
${sl-appinfo} | Silverlight应用。 |
${specialfolder} | 文件夹路径 |
${stacktrace} - | 堆栈跟踪渲染器。 |
${tempdir} | 临时目录中。 |
${threadid} | 当前线程的标识符。 |
${threadname} | 当前线程。 |
${ticks} | 当前日期和时间。 |
${time} | 24小时格式HH:MM:ss.mmm。 |
${var} | {$var}-提供新的变量(4.1) |
${windows-identity} | indows线程标识信息(用户名) |
官方参考:
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/转载地址:https://codeboy.blog.csdn.net/article/details/108412758 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!