导言:
因为在项目开发中一直使用Log4Net作为项目日志框架,最近突然觉得厌倦了,于是尝试使用NLog作为新项目的日志框架(当然作为一个有抱负的攻城狮,我绝不应该局限于现在的技术,而是不断的使用和学习新技术)。当然serilog也是一个很好的日志框架,但是今天我主要想谈谈NLog在项目中的配置和使用。
NLog框架源代码:https://github.com/NLog/NLog
I .导入NLog NuGet PackAge:
第二,配置NLog配置文件:
注意:我在这里为独立配置创建了一个新的NLog.config配置文件。当然也可以在web.config中完成相应的配置!
关于NLog详细配置文件信息,请查看官网描述:https://github.com/nlog/nlog/wiki/configuration-file
请参考陈晓大榭的NLog配置:https://www.jb51.net/article/165343.htm
一、我的NLog.config配置代码:
?xml版本='1.0 '编码='utf-8 '?nlog xmlns=' http://www . nlog-project . org/schemass/nlog . xsd ' xmlns : xsi=' http://www . w3 . org/2001/XMLSchema-instance ' targets!-此部分中的所有目标将自动异步-目标名称=' asyncfile' xsi:类型=' asyncwrapper '!-项目日志保存文件的路径描述fileName='${basedir}/保存目录,Create/$ { short date }/$ { recorder name }-$ {单层记录}-$ {shortdate}。txt '-target name=' log _ file ' xsi : type=' file ' filename=' $ { basedir }/project logs/$ { short date $ { logger }-$ { level }-$ { short date }。txt ' layout=' $ { long date } | $ { message } $ { one except : $ { except : format=message } $ { new line } $ { stack trace } $ { new line } ' archive filename=' $ { basedir }/archives/$ { logger }-$ { level }-$ { short date }-{ # # # # # # }。txt ' archive over size=' 102400 ' archive numbering=' Sequence ' concurrentWrites=' true ' keepfile open=' false '/target!-使用可自定义的颜色将日志消息写入控制台-目标名称=' color console ' xsi : type=' color console ' layout='[$ { date 3360 format=hh :mm 3360 ss }]: $ { message } $ { exception 3360 format=-规则配置,Final-匹配最终规则后,将不处理任何规则-规则记录器名称=' Microsoft。* " min level=' info ' write to=' ' final=' true '/记录器名称=' * min level=' info ' write to=' async file '/记录器名称=' * ' min level=' warn ' write to=' color console '/rules/NLogg,nlog配置文件信息简要概述:
1.规则描述:
规则是记录器的元素,具有以下属性:
名称-记录器名称过滤器-可能包含通配符(*和?)
最小级别-记录的最低级别
最高级别-最高级别的记录
级别-单一级别记录
级别-以逗号分隔的记录级别列表
写至-以逗号分隔的要写入的目标列表
最终-匹配最终规则后不处理任何规则
已启用-设置为false以禁用规则而不删除它
规则名称-允许配置的规则标识符。查找规则名称和配置。用于规则查找的RemoveRuleByName。
在NLog 4.6.4中引入
注意:虽然规则记录器是命名的,但是它没有定义记录器。它指的是一个或多个记录器。
通过将规则名称模式与记录器名称进行匹配,将规则映射到记录器。规则名称属性可以包含通配符(*和?),以传递通配符
匹配以匹配记录器名称。
*-匹配0个或更多字符
?-与1个字符完全匹配
2.目标[目标]:
每个目标由一个目标元素表示。每个目标需要两个属性:
名称-目标名称
类型-目标类型-例如,“文件”、“数据库”、“邮件”。使用命名空间时,此属性已被命名为xsi:type。
除了这些属性之外,目标通常还接受影响诊断跟踪写入方式的其他参数。每个目标都有一组不同的参数,这些参数在项目主页上有详细描述,并且与上下文相关。智能感知也可以在Visual Studio中使用。
例如,文件目标接受文件名定义输出文件名的参数控制台目标具有错误参数,该参数确定诊断跟踪是否写入标准错误(stderr)而不是进程的标准输出(标准输出).
此示例演示了一个目标定义多个目标的部分:两个文件,一个网络目标和发送一串字符给调试器目标:
targets target name=" f1 " xsi:type=" File " FIlename=" File 1。txt/target name=" F2 " xsi:type=" File " FIlename=" File 2。txt/target name=" n1 " xsi:type=" Network " address=" TCP://localhost:4001 "/target name=" ds " xsi:type=" outputdebugsting "/targets NLog提供了许多预定义的目标。实际上创建自己的目标非常容易-请参阅如何编写自定义目标。
三、NLog使用:
在这里,我封装了一个股市分析使用帮助类,提供给全站调用,这样就可以避免在不同的类中实例化股市分析对象的步骤。
LoggerHelper.cs:
///summary ///nLog使用帮助类////摘要公共类LoggerHelper { ///summary ///实例化nLog,即为获取配置文件相关信息////摘要私有只读NLog .Logger _logger=LogManager .GetCurrentClassLogger();私有静态LoggerHelper _ obj公共静态LoggerHelper _ { get=_obj?(新的logger helper());set=_ obj=value} #区域调试,调试公共void Debug(字符串msg) { _logger .调试(消息);} public void Debug(字符串消息,异常错误){ _logger .调试(错误,消息);} # endregion #区域信息,信息公共作废信息(字符串msg) { _logger .信息(消息);}公共作废信息(字符串消息,异常错误){ _logger .信息(错误,消息);} #endregion #region Warn,警告公共无效警告(字符串msg) { _logger .warn(msg);}公共无效警告(字符串消息,异常错误){ _logger .警告(错误,消息);} # endregion #区域跟踪,追踪公共void Trace(字符串msg) { _logger .微量(味精);}公共void Trace(字符串消息,异常错误){ _logger .跟踪(错误,消息);} # endregion #区域错误,错误公共无效错误(字符串msg) { _logger .错误(消息);}公共无效错误(字符串消息,异常错误){ _logger .错误(错误,消息);} # endregion #区域致命,致命错误公共空间致命字符串(msg) { _logger .致命(味精);}公共空间致命(字符串消息,异常错误){ _logger .致命的(呃,味精);} #endregion }四、运行记录结果:
因为我在NLog.config配置文件中配置的日志存储路径为:项目日志/当前时间(年-月-日)/如下图所示:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。