.Net 如何使用Nlog
时间:2019-11-01
本文章向大家介绍.Net 如何使用Nlog,主要包括.Net 如何使用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: <targets /> - 定义日志的目标/输出,下级是<target> <rules /> - 定义日志的路由规则,下级是<logger> 三 标签解读 <nlog>标签 autoReload 修改配置文件后是否允许自动加载无须重启程序 throwExceptions 内部日志系统抛出异常 internalLogLevel 可选Trace|Debug|Info|Warn|Error|Fatal决定内部日志的级别 Off 关闭 internalLogFile 把内部的调试和异常信息都写入指定文件里 建议throwExceptions的值设为“false”,这样由于日志引发的问题不至于导致应用程序的崩溃。 <targets>标签 <target />区域定义了日志的目标或者说输出 ,,在这里可以按需设置文件名称和格式,输出方式。 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 layouts 用来规定布局样式,语法“${属性}”,可以把上下文信息插入到日志中,官方提供的可以用的属性见文末附录 <rules>标签 各种规则配置在logger里 name - 记录者的名字 minlevel - 最低级别 maxlevel - 最高级别 level - 单一日志级别 levels - 一系列日志级别,由逗号分隔。 writeTo - 规则匹配时日志应该被写入的一系列目标,由逗号分隔。 <variable>标签 变量定义 <variable name="variable1" value="${basedir}/logs"/> <targets> <target name="File" xsi:type="File" fileName="${variable1}/${shortdate}.txt"/> </targets> 四 调用方法 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 配置输出到文件: <?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" internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> <variable name="variable1" value="${newline}date: ${date}${newline}level: ${level}${newline}logger: ${logger}${newline}machinename: ${machinename} ${newline}message: ${message}${newline}appdomain: ${appdomain}${newline}assembly-version: ${assembly-version}${newline}basedir: ${basedir} ${newline}callsite: ${callsite}${newline}callsite-linenumber: ${callsite-linenumber}${newline}counter: ${counter}${newline}nlogdir: ${nlogdir} ${newline}processid: ${processid}${newline}processname: ${processname}${newline}specialfolder: ${specialfolder} ${newline}stacktrace: ${stacktrace}${newline}-----------------------------------------------------------" /> <targets> <target name="log_file" xsi:type="File" fileName="${basedir}/LogInformation/${level}_${shortdate}.txt" layout="${variable1}" /> </targets> <rules> <logger name="*" writeTo="log_file" /> </rules> </nlog> 效果:
附录: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/ ———————————————— 版权声明:本文为CSDN博主「一木一百」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u013667895/article/details/79016059
原文地址:https://www.cnblogs.com/weihengblogs/p/11776440.html
- ModernPHP读书笔记(三)——PHP的良好实践
- PHP开发过程的那些坑(一) ——对象拷贝
- PHP开发过程的那些坑(二) ——PHP empty函数
- Thinking in SQL系列之数据挖掘Apriori关联分析再现啤酒尿布神话
- PHP开发过程的那些坑(三) ——PHParray_shift函数
- CSS3弹性盒布局
- iBatis.Net(4):DataMapper API
- PHP开发过程的那些坑(四) ——PDO bindParam函数
- iBatis.Net(3):创建SqlMapper实例
- PHP开发过程的那些坑(五) ——PHP的empty()
- iBatis.Net(2):基本概念与配置
- ASP.NET Web API中的依赖注入什么是依赖注入ASP.NET Web API依赖解析器使用Unity解析依赖配置依赖解析
- 解决Entity Framework查询匿名对象后的跨域访问的一种方式
- WebSocket在ASP.NET MVC4中的简单实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- urllib, urllib2, urllib3 都是小弟弟
- 使用 Kustomize 定制 Helm Chart
- 装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案
- 最全总结 | 聊聊 Python 数据处理全家桶(Mysql 篇)
- 6个提升效率的pandas小技巧
- 如何用 Python 让微博热搜榜动起来
- 如何用 Python 让微博热搜榜动起来
- 漫画:什么是 “抽象工厂模式” ?
- 5个很常用的CSS3网页小实例
- 收藏!!!学习Matplotlib看这一份笔记就够了!
- 最全总结 | 聊聊 Python 数据处理全家桶(Sqlite篇)
- Selenium 系列篇(六):反反爬篇
- Selenium 系列篇(五):文件篇
- 腾讯大佬整理了 Python 所有内置异常,Python高手必备的排错手册
- Selenium 系列篇(四):JS 篇