转:NLog 自定义日志内容,写日志到数据库;修改Nlog.config不起作用的原因
2017-03-07 14:43
423 查看
转:http://www.cnblogs.com/tider1999/p/4308440.html
NLog的安装请百度,我安装的是3.2。NLog可以向文件,数据库,邮件等写日志,想了解请百度,这里讲怎么写入数据库,及常常会遇到的问题:
1、layout render
NLog内置了很多日志内容格式,样子就是${longdate}之类的,详见:https://github.com/NLog/NLog/wiki/Layout-Renderers
2、如果我们要自定义日志:
3、要点:当我们修改 NLog.config 文件时,要重新编译解决方案,修改才会起作用。这个应该是很多人使用NLog不成功的一个巨坑!
至于网文中及NLog文档中介绍的:加入 aotuReload="true" 属性的办法,不起作用,不知道是不是我有没有注意到的方法。
4、收集的讲解NLog比较详细的文章:
http://www.cnblogs.com/sorex/archive/2013/01/31/2887174.html
http://www.cnblogs.com/Gyoung/archive/2012/10/18/2729613.html
http://blog.csdn.net/viviachen/article/details/19171661
http://www.cnblogs.com/Irving/p/3449048.html(这个很不错)
NLog的安装请百度,我安装的是3.2。NLog可以向文件,数据库,邮件等写日志,想了解请百度,这里讲怎么写入数据库,及常常会遇到的问题:
1、layout render
NLog内置了很多日志内容格式,样子就是${longdate}之类的,详见:https://github.com/NLog/NLog/wiki/Layout-Renderers
2、如果我们要自定义日志:
<target xsi:type="Database" name="LogOnlog" connectionStringName ="DataBase" > <commandText> Insert into MyLog(Operator_name,Operator_Type,IP,DateTime,Operation) Values(@Operator_name,@Operator_Type,@IP,@DateTime,@Operation); </commandText> <parameter name = "@Operator_name" layout = "${event-context:item=Operator_name}"/> <parameter name = "@Operator_Type" layout = "${event-context:item=Operator_Type}" /> <parameter name = "@DateTime" layout = "${event-context:item=DateTime}"/> <parameter name = "@IP" layout = "${event-context:item=IP}" /> <parameter name = "@Operation" layout = "${event-context:item=Operation}" /> </target> </targets> <rules> <logger name="*" minlevel="Trace " writeTo="LogOnlog"/> </rules>
${event-context:item=Operation}中:后面的“Operation”在生成Logger时会形成名为“Operation”的键,我们就可以在代码中对他赋值,详见:https://github.com/NLog/NLog/wiki/EventContext-Layout-Renderer。我代码中是这样:
Logger logger = LogManager.GetCurrentClassLogger(); //不能用 Logger logger =new Logger();,会报错:“NLog.Logger.Logger()”不可访问,因为它受保护级别限制 LogEventInfo lei = new LogEventInfo(); lei.Properties["Operator_name"] = Opeator_Name; lei.Properties["Operator_Type"] = Operator_Type; lei.Properties["DateTime"] = DateTime.Now; lei.Properties["IP"] = GetClientIPOrAdd.GetIP(); lei.Properties["Operation"] = Operation; lei.Level = LogLevel.Info; logger.Log(lei);
3、要点:当我们修改 NLog.config 文件时,要重新编译解决方案,修改才会起作用。这个应该是很多人使用NLog不成功的一个巨坑!
至于网文中及NLog文档中介绍的:加入 aotuReload="true" 属性的办法,不起作用,不知道是不是我有没有注意到的方法。
4、收集的讲解NLog比较详细的文章:
http://www.cnblogs.com/sorex/archive/2013/01/31/2887174.html
http://www.cnblogs.com/Gyoung/archive/2012/10/18/2729613.html
http://blog.csdn.net/viviachen/article/details/19171661
http://www.cnblogs.com/Irving/p/3449048.html(这个很不错)
相关文章推荐
- NLog 自定义日志内容,写日志到数据库;修改Nlog.config不起作用的原因
- 转:NLog 自定义日志内容,写日志到数据库;修改Nlog.config不起作用的原因
- spring Aspect 实现自定义注解的日志记录,有时候注解类不起作用的原因分析
- [转]使用NLog记录日志到数据库 自定义日志表的数据格式
- 关于Android中内容操作数据库失败的原因及修改方法
- 通过修改WebConfig文件自定义Web后台数据库
- [ASP.NET 2.0 ]自定义role,Membership和profile数据库,在web.config中的写法
- 【转】 VS2005 ASP.NET2.0安装项目的制作(包括数据库创建、站点创建、IIS属性修改、Web.Config文件修改)
- 在C#中修改Web.Config的指定内容
- 修改MOSS2007内容查询部件实现自定义格式显示
- 数据库日志超过 4G 数据库不能正常工作的原因
- DB2 V9.7中新特性(二)---关于锁的改进-数据库日志内容(二)
- [ASP.NET 2.0 ]自定义role,Membership和profile数据库,在web.config中的写法
- 使用log4net记录日志到数据库(含有自定义属性)
- 修改webconfig 连接数据库文件 session清空解决办法
- rman复制数据库ORA-01547ORA-01194ORA-01110,强制打开并修改日志文件
- C#中读取自定义的config文件(数据库的连接符大多情况使用)
- VS2005 ASP.NET2.0安装项目的制作(包括数据库创建、站点创建、IIS属性修改、Web.Config文件修改)
- [ASP.NET 2.0 ]自定义role,Membership和profile数据库,在web.config中的写法
- 安装程序类(VB.net,新建数据库,修改webconfig文件)