Nlog 简单的快速攻略
废话不多说直接进入正题。
1、在项目中加入Nlog的应用

安装后会出现两个文件

2、我们打开Nlog.config配置文件设置日志记录
<?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"> <!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<!-- 定义变量
projectName 项目名称
logDirectory 文件路径
-->
<variable name="projectName" value="test"/> <variable name="logDirectory" value="F:/nlog/${projectName}/${shortdate}"/>
<targets>
<!-- 定义输出模板:
type="File":这个记录方式为文件类型
fileName="${logDirectory}/All.log":表示输出到文件All.log中
layout="...":输出文件中错误的显示格式
${logDirectory}:为上述定义的路径
${longdate}:输出长日期 yyyy-MM-dd HH:mm:ss.ffff(例:2013-01-31 14:49:21.2120)
${level}:错误等级(由低到高为Trace,Debug,Info,Warn,Error,Fatal)
${newline}:输出 新的一行
${stacktrace}:输出 堆栈信息
${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}:输出 命名空间.类名.方法名(文件路径:行号)
${message}:输出错误信息-->
<target xsi:type="File" name="logfiles" fileName="${logDirectory}/${shortdate}.log" layout="${longdate} ${level} ${message} ${stacktrace} ${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}${newline}" />
</targets>
<rules>
<!-- 定义输出日志:
name="*":记录所有信息
minlevel="Trace":记录的最低错误级别为Trace
writeTo="logfiles":日志写入logfiles的target中-->
<logger name="*" minlevel="Trace" writeTo="logfiles" />
</rules>
</nlog>
3、用简单的控制台程序测试一下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NLog; namespace NlogDemo
{
class Program
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
WriteLog();
}
public static void WriteLog()
{
Logger.Log(LogLevel.Error, "nlog test error");
}
}
}
F5运行之后在我设置的路径下会有个以时间命名的log文件

日志内容

日志记录的内容与你在配置文件配置的fileName格式有关
4、以上的是文件的记录方式,下面我们来看数据库的记录方式
<?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"> <!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<!-- 定义变量
projectName 项目名称
logDirectory 文件路径
-->
<variable name="projectName" value="test"/> <variable name="logDirectory" value="F:/nlog/${projectName}/${shortdate}"/>
<targets>
<!-- 定义输出到MySQL中:
type="database":这个记录方式是数据库
dbProvider="MySql.Data.MySqlClient":使用MySQL的连接方式
connectionString="":数据库的连接字符串
commandText="insert into Logs(CreateDate,LogLevel,CallSite,Massage,StackTrace) values (@CreateDate,@LogLevel,@CallSite,@Massage,@StackTrace)":insert语句
<target xsi:type="Database" name="logdatabase" dbProvider="MySql.Data.MySqlClient"
connectionString="Server=127.0.0.1;Database=mytestdatabase;Uid=root;Pwd=123;"
commandText="insert into Logs(create_time,loglevel,callsite,massage,stacktrace) values (@create_time,@loglevel,@callsite,@massage,@stacktrace)">
<!-- 对应到insert语句的参数的值-->
<parameter name="create_time" layout="${longdate}" />
<parameter name="loglevel" layout="${level}" />
<parameter name="callsite" layout="${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}" />
<parameter name="massage" layout="${message}" />
<parameter name="stacktrace" layout="${stacktrace}" />
</target>
</targets>
<rules>
<!-- 定义输出日志:
name="*":记录所有信息
minlevel="Trace":记录的最低错误级别为Trace
writeTo="logdatabase":日志写入数据库logdatabase中-->
<logger name="*" minlevel="Trace" writeTo="logdatabase" />
</rules>
</nlog>
sql语句
CREATE TABLE `mytestdatabase`.`Logs` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`create_time` DATETIME NOT NULL,
`loglevel` VARCHAR(5) NOT NULL,
`callsite` VARCHAR(5000) DEFAULT NULL,
`massage` LONGTEXT,
`stacktrace` VARCHAR(5000) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
控制台程序还是上面的代码直接F5运行
数据库表中的数据

当然<targets>下面可以包含很多个target 我们也可以把日志文件同时写到文件和数据库表中
<?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"> <!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<!-- 定义变量
projectName 项目名称
logDirectory 文件路径
-->
<variable name="projectName" value="test"/> <variable name="logDirectory" value="F:/nlog/${projectName}/${shortdate}"/>
<targets>
<target xsi:type="File" name="logfiles" fileName="${logDirectory}/${shortdate}.log" layout="${longdate} ${level} ${message} ${stacktrace} ${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}${newline}" />
<target xsi:type="Database" name="logdatabase" dbProvider="MySql.Data.MySqlClient"
connectionString="Server=127.0.0.1;Database=mytestdatabase;Uid=root;Pwd=123;"
commandText="insert into Logs(create_time,loglevel,callsite,massage,stacktrace) values (@create_time,@loglevel,@callsite,@massage,@stacktrace)">
<parameter name="create_time" layout="${longdate}" />
<parameter name="loglevel" layout="${level}" />
<parameter name="callsite" layout="${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}" />
<parameter name="massage" layout="${message}" />
<parameter name="stacktrace" layout="${stacktrace}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="logfiles,logdatabase" />
</rules>
</nlog>
这里只是nlog日常简单的应用,更加详细的应用请参考
NLog Doc http://www.nlog-project.org/
Nlog 简单的快速攻略的更多相关文章
- win10 home安装docker快速攻略
本文适用于win10 Home用户,专业版和企业版直接见官网.win7版本见Docker Toolbox. 安装清单 软件 说明 Docker Desktop Installer 步骤介绍页:http ...
- 拿nodejs快速搭建简单Oauth认证和restful API server攻略
拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...
- Java快速入门-05-数组循环条件 实例《延禧攻略》
<延禧攻略>如此火爆,蹭蹭热度,用 JAVA 最基础的数组,循环,条件,输入/输出,做了一个简单的小游戏,帮助初学者巩固 JAVA 基础,注释非常详细 动态图展示: xuanfei.jav ...
- 成都Uber优步司机快速注册攻略(外地车牌也可加入,不用现场培训)
我加入Uber司机有一段时间了,有一些经验和感想分享给大家,让大家少走些弯路.目前加入优步不收取任何费用,不需要抢单,时间安排自由灵活,使用便捷,深受大众喜爱. 加入人民优步拼车条件:购买运行5年之内 ...
- Moon.Orm3.8技术全攻略
Moon.ORM技术全攻略 一.绪论 本文主要是针对Moon.ORM的技术的讨论及其使用使用指导.如有其它疑问,请留言.本文主要针对Moon.ORM3.9版本,同时将会对4.0做一个技术预览.本文从 ...
- 取代奶瓶Minidwep-gtk破解WPA 全攻略
取代奶瓶Minidwep-gtk 破 WPA 全攻略 目录 1. CDlinux 下使用 minidwepgtk 获取握手包并使用自带的字典破解 2. 自带的字典破解不出密码时使用 U 盘外挂字典继 ...
- GitHub超详细图文攻略
GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git 分类: 转载2014-03-25 21:10 10641人阅读 评论(2) 收藏 举报 GitHubbr ...
- 30天,O2O速成攻略【8.15济南站】
活动概况 时间:2015年08月15日13:30-16:30 地点:山东大学凤岐茶社(山东大学中心校区北门18号楼东连廊一层) 主办:APICloud.蚁巡 网址:www.apicloud.com 费 ...
- Linux Shell脚本攻略 读书笔记
Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...
随机推荐
- 关于WPF中Popup中的一些用法的总结
Popup控件是一个常用的非常有用的控件,顾明思义就是弹出式控件,首先我们来看看MSDN对它的解释吧,表示具有内容的弹出窗口,这个是非常重要的控件,我们看看它的继承关系吧: System.Object ...
- groovy安装 ideal
参考:https://blog.csdn.net/newbie_907486852/article/details/80879745 (1) 首先下载groovy: https://gradle.or ...
- cmd & tree & bash
cmd & tree & bash bug E: Unable to locate package tree solution # 1. update $ sudo apt-get u ...
- 老男孩python学习自修第五天【集合】
特点: (1)无序 (2)不重复 使用场景: (1)关系测试 (2)去重 x & y 求交集 x | y 求并集 x - y 求差集 x ^ y 求对称差集 x.intersection(y) ...
- jdbc 接口的用法 Statement和PreparedStatement的区别!
package cn.zhouzhou; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Resu ...
- MySQL列类型选择
比如年龄这个字段可以使用 1990-03-15 也可以用 19900315表示在列类型上可以选择 char 和 int:如果一个字段可以选择多种类型,尽量选择一个更快的类型:字段类型优先级 ...
- faster rcnn
模型下载 https://github.com/rbgirshick/py-faster-rcnn/issues/542
- 51nod 1636
1636 教育改革 我看过题解了还下了数据,表示很惭愧不想说什么,但还是说两句吧 sol: 因为差值很小只有100,所以对数组下标存的是(选择的数值和左端点的差值) f[i][j][k]即为第i天选了 ...
- 搭建Hexo博客(三)—换电脑继续写Hexo博客
Hexo和GitHub搭建博客的原理是:Hexo将source下的md文件生成静态的html页面,存放到public目录中,这一步是由命令:hexo -g完成.接下来执行hexo -d命令,就将pub ...
- 我踩过的Alwayson的坑!
最近被sql server Alwayson高可用组和读写分离,弄得神魂颠倒,身心俱疲.遇到了下面一些问题,提醒自己也给后来人做些记录. EntityFramework支不支持Alwayson? 起因 ...