栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

.Net使用NLog使用方式及详细配置(输出至文件/RabbitMQ/远程网络Tcp)

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.Net使用NLog使用方式及详细配置(输出至文件/RabbitMQ/远程网络Tcp)

NLog介绍

NLog是一个简单灵活的.NET日志记录类库,NLog的API非常类似于log4net,且配置方式非常简单。通过使用NLog,我们可以在任何一种.NET语言中输出带有上下文的调试信息,根据项目需求配置署出格式和输出目标的规则。

NLog使用路由进行配置,但log4net却使用层次性的appender配置,这样就让NLog的配置文件非常容易阅读,并便于今后维护。

支持多种形式输出日志:文本文件 系统日志 数据库 控制台 邮箱 等

1、获取方式

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/

2、配置文件

支持多种配置形式:

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在安装时自动生成 ,比其他的配置简单

3、配置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 MailNetwork

layouts 用来规定布局样式,语法“${属性}”,可以把上下文信息插入到日志中,官方提供的可以用的属性见文末附录

rules标签

各种规则配置在logger子标签里

name - 记录者的名字

minlevel - 最低级别

maxlevel - 最高级别

level - 单一日志级别

levels - 一系列日志级别,由逗号分隔。

writeTo - 规则匹配时日志应该被写入的一系列目标,由逗号分隔。
variable标签

变量定义

  
    
      
 
最终的nlog.config配置文件
 

  
  
  
    
    
    
    
    
    

    
    
    
    
  

  
    
    
    
  

4、.NET Core调用方法

Nuget需引入(第一个是通过RabbitMQ消息队列异步输出需要引用的):

Program中引入:

调用时注入:

附录: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/

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905365.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号