转:NLog 自定义日志内容,写日志到数据库;修改Nlog.config不起作用的原因
转: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、如果我们要自定义日志:

<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不起作用的原因的更多相关文章
- Yii2.0中文开发向导——自定义日志文件写日志
		
头部引入log类use yii\log\FileTarget; $time = microtime(true);$log = new FileTarget();$log->logFile = Y ...
 - 异步调试神器Slog,“从此告别看日志,清日志文件了”
		
微信调试.API调试和AJAX的调试的工具,能将日志通过WebSocket输出到Chrome浏览器的console中 — Edit 92 commits 4 branches 3 releases ...
 - mysql 开发进阶篇系列 39 mysql日志之二进制日志(binlog)
		
一.概述 二进制日志(binlog)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但是不包括数据查询语句, 语句以"事件"的形式保存,它描述了数据的更改过程, ...
 - NetCore2.2使用Nlog自定义日志写入路径配置方式
		
在一些特定场景的业务需求下,日志需要写入到不同的路径下提供日志分析.第一种:默认Nlog可以通过日志级别来区分路径,——优点是不需要额外配置,开箱即用——缺点是不够灵活,如果超过级别数量,则不满足需求 ...
 - [转]ASP.NET Core 开发-Logging 使用NLog 写日志文件
		
本文转自:http://www.cnblogs.com/Leo_wl/p/5561812.html ASP.NET Core 开发-Logging 使用NLog 写日志文件. NLog 可以适用于 . ...
 - ASP.NET Core 开发-Logging 使用NLog 写日志文件
		
ASP.NET Core 开发-Logging 使用NLog 写日志文件. NLog 可以适用于 .NET Core 和 ASP.NET Core . ASP.NET Core已经内置了日志支持,可以 ...
 - How To Write In Sharepoint Log File 怎么对自定义的MOSS代码写日志
		
How To Write In Sharepoint Log File 怎么对自定义的MOSS代码写日志 Add Microsoft.Office.Server dll in your project ...
 - .net core 2.0使用NLog写日志文件
		
原文地址:传送门 之前也看了 linezero 大佬写的教程,但是总是没有成功写入日志文件.按照 曲廉卿 的已成功,以下正文: 最近研究了一下NLog的使用方式,简单的入了一下门. 实现的功能,对于不 ...
 - [转]log4net 发布到生产环境不写日志的解决方法--使用 NLog日志
		
本文转自:http://www.cnblogs.com/weiweictgu/p/5848805.html 1.升级到log4net的最新版 PM下执行 Install-Package log4net ...
 
随机推荐
- 状态图 Statechart Diagram
			
一.状态图(Statechart Diagram):用来描述一个特定的对象所有可能的状态,以及由于各种事件的发生而引起的状态之间的转移和变化. 一个机器的状态图: TIP:在需求分析和系统设计时都可以 ...
 - 另类angularjs应用
			
回顾 上一篇文章主要讲解了创建兼容任意浏览器(主要是ie的一些奇葩问题)的angularjs web应用,但是项目开发中其实更重要的还是在功能的模块化.代码自动压缩上面,这样项目在后期维护或者功能的重 ...
 - How to change statusbar text color to dark on android 4.4
			
Because I haven't enough votes, so post picture at here, thank you. Almost 2 weeks ago, I was search ...
 - SpringMVC Controller 返回值的可选类型
			
spring mvc 支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void. ModelAndView @RequestMap ...
 - 《微信小程序七日谈》- 第二天:你可能要抛弃原来的响应式开发思维
			
<微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 上篇文 ...
 - NoSuchMethodError: antlr.collections.AST.getLine()I
			
错误完整表述: Filter execution threw an exception] with root cause java.lang.NoSuchMethodError: antlr.coll ...
 - Android 常见工具类封装
			
1,MD5工具类: public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0' ...
 - 还在抱怨JS文件里没有智能提示吗, VS10以及以上都可以 .NET
			
1.打开JS文件 2.编写$.我们会发现什么也没有 3.托进来 4.有了哈 保存头部代码新建JS都贴上去.
 - 为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式
			
为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式,代码如下: public class DataComparer<T>:IEqualityCompare ...
 - sprint 1 2 3 贡献分
			
本学期我们做的项目是商品和员工管理系统(茗仕茶业管理平台) 团队Github地址:https://github.com/LinWenFeng团队博客地址:http://www.cnblogs.com/ ...