NLog使用整理
NLog使用中碰到的问题整理
1,日志写mysql数据库报错,
原因:

在sql语句中使用了mysql的函数now() 导致插入失败,
解决办法: 使用参数代替now().
在nlog配置文件中设置 throwExceptions="true" internalLogLevel="Debug" 可以是nlog抛出异常方便问题定位,
2、一些layout方法记录: 见:https://github.com/NLog/NLog/wiki/Layout-Renderers
自定义参数:
<variable name="myvar" value="myvalue"/>
则参数 myvar 可以直接使用 ${myvar} 得到值 myvalue
也可以在代码中定义:
<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();
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 文件时,要重新编译解决方案,修改才会起作用。
4、路由规则rule
路由规则主要用于将日志和输出目标匹配起来,它一般有如下几个属性
- name - 记录者的名字 (允许使用通配符*)
- minlevel - 匹配日志范围的最低级别
- maxlevel - 匹配日志范围的最高级别
- level - 匹配的单一日志级别
- levels - 匹配的一系列日志级别,由逗号分隔。
- writeTo - 规则匹配时日志应该被写入的一系列目标,由逗号分隔。
尚未解决的问题:
Logger logger = LogManager.GetLogger(string name);
这个方法中的name参数是干什么用的还是没有搞清楚。
------------补充-----------------------------
查看了源码 这个name参数好像没什么作用,记录日志的人,默认是当前类名(fullname),暂且当作一个标记使用。
参考地址:
http://www.cnblogs.com/freeliver54/p/6514686.html
http://www.cnblogs.com/TianFang/p/4003749.html
一个系列讲解: http://blog.csdn.net/u010176014/article/details/48655493
官网详细layout文档: https://github.com/NLog/NLog/wiki/Layout-Renderers
NLog使用整理的更多相关文章
- 基于.NET平台常用的框架整理(转)
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的 学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到, ...
- 【转】基于.NET平台常用的框架整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累 了一些开源的组件,就目前想到的先整理于此,如果再想到, ...
- 基于.NET平台常用的框架整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就 ...
- .NET平台常用的框架整理
基于.NET平台常用的框架整理 DotNet | 2016-03-31 17:13 (点击上方蓝字,可快速关注我们) 来源:天使不哭 链接:http://www.cnblogs.com/hgmyz/p ...
- 基于.NET平台常用的框架整理【转】
转:http://www.cnblogs.com/hgmyz/p/5313983.html 自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产 ...
- ( 转)基于.NET平台常用的框架整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就 ...
- 基于.NET平台常用的框架整理 (转)
http://www.cnblogs.com/hgmyz/p/5313983.html 自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了 ...
- 基于.NET平台常用的框架和开源程序整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中 也积累了一些开源的组件,就目前想到的先整理于此,如果再想到, ...
- .NET方面的框架的整理和总结
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就 ...
随机推荐
- 读书笔记--《编写高质量代码:改善Python程序的91个建议》
第一章 引论 建议写Pythonic式的代码,我理解为充分利用pythonAPI,用最简洁方式写出代码 1.两个变量交换: a, b = b, a 2.翻转list: a = [1, 2, 3, ...
- 【python 3】 文件操作
文件操作 一: 只读.读写 # 示例: 1 f = open("E:\人员名单.txt" , encoding="utf-8" , mode="r&q ...
- 《图解Java多线程设计模式》读书笔记
略读中...后面详读的时候,补充经典图片和文字说明
- centos7 mysql数据库的安装与使用
一:数据库的安装 第一步 下载数据库到主机,, 第二步 通过xshell将数据库压缩包上传至centos7虚拟主机(#注意:服务器主机需下载上传工具lrzsz 命令:yun -y install ...
- Devexpress中文语言包汉化
1.下载对应版本的dev语音包 将语言包解压,放到如下文件夹,编译时会自动复制到bin目录下的. C:\Program Files (x86)\DevExpress 17.2\Components\B ...
- Java分布式锁看这篇就够了
### 什么是锁? 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量. 而同步的本质是通过锁来实现的 ...
- php正则匹配
在PHP中,有两套正则表达式函数库,两者功能相似,只是执行效率上有所不同, 一套是有"preg_"为前缀命名的函数,一套有"ereg_"命名的函数的函数, 一个 ...
- python-获取URL中的json数据
数据源为某系统提供的URL,打开是json文件,python代码获取如下: URL替换成自己的即可. import urllib.request def get_record(url): resp = ...
- CentOS 7下安装GUI图形界面
https://www.linuxidc.com/Linux/2017-03/141465.htm
- 【二分查找】 跳石头NOIP2015提高组 D2T1
[二分查找]跳石头NOIP2015提高组 D2T1 >>>>题目 [题目描述] 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石 ...