废话不多说直接进入正题。

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 简单的快速攻略的更多相关文章

  1. win10 home安装docker快速攻略

    本文适用于win10 Home用户,专业版和企业版直接见官网.win7版本见Docker Toolbox. 安装清单 软件 说明 Docker Desktop Installer 步骤介绍页:http ...

  2. 拿nodejs快速搭建简单Oauth认证和restful API server攻略

    拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...

  3. Java快速入门-05-数组循环条件 实例《延禧攻略》

    <延禧攻略>如此火爆,蹭蹭热度,用 JAVA 最基础的数组,循环,条件,输入/输出,做了一个简单的小游戏,帮助初学者巩固 JAVA 基础,注释非常详细 动态图展示: xuanfei.jav ...

  4. 成都Uber优步司机快速注册攻略(外地车牌也可加入,不用现场培训)

    我加入Uber司机有一段时间了,有一些经验和感想分享给大家,让大家少走些弯路.目前加入优步不收取任何费用,不需要抢单,时间安排自由灵活,使用便捷,深受大众喜爱. 加入人民优步拼车条件:购买运行5年之内 ...

  5. Moon.Orm3.8技术全攻略

    Moon.ORM技术全攻略  一.绪论 本文主要是针对Moon.ORM的技术的讨论及其使用使用指导.如有其它疑问,请留言.本文主要针对Moon.ORM3.9版本,同时将会对4.0做一个技术预览.本文从 ...

  6. 取代奶瓶Minidwep-gtk破解WPA 全攻略

    取代奶瓶Minidwep-gtk 破 WPA 全攻略  目录 1. CDlinux 下使用 minidwepgtk 获取握手包并使用自带的字典破解 2. 自带的字典破解不出密码时使用 U 盘外挂字典继 ...

  7. GitHub超详细图文攻略

    GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git 分类: 转载2014-03-25 21:10 10641人阅读 评论(2) 收藏 举报 GitHubbr ...

  8. 30天,O2O速成攻略【8.15济南站】

    活动概况 时间:2015年08月15日13:30-16:30 地点:山东大学凤岐茶社(山东大学中心校区北门18号楼东连廊一层) 主办:APICloud.蚁巡 网址:www.apicloud.com 费 ...

  9. Linux Shell脚本攻略 读书笔记

    Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...

随机推荐

  1. Django模板渲染

    一 . 语法 # 关于模板渲染只需要记住两种语法就可以: 1.{{ }} # 里面写变量 2.{% %} # 里面写与逻辑相关的,比如for循环 二 . 变量名 在django的模板语言中按照语法: ...

  2. 搞了一下午时间全浪费在这了,其实是自己拷贝了patch文件,导致tab变成了空格的错

    很老实的基于最新的kernel,源文件,修改了代码.通过diff -uNr --show-c-function dir1 dir2 > ipv6.patch制作了patch文件,准备代码上库构建 ...

  3. umount -fl用法

    umount, 老是提示:device is busy, 服务又不能停止的.可以用"umount -fl"解决! 挂载: mount - mount a filesystem mo ...

  4. Guava Cache源码详解

    目录 一.引子 二.使用方法 2.1 CacheBuilder有3种失效重载模式 2.2 测试验证 三.源码剖析 3.1 简介 3.2 源码剖析 四.总结 优点: 缺点: 正文 回到顶部 一.引子 缓 ...

  5. 莫烦keras学习自修第三天【回归问题】

    1. 代码实战 #!/usr/bin/env python #!_*_ coding:UTF-8 _*_ import numpy as np # 这句话不知道是什么意思 np.random.seed ...

  6. jdbc一点小笔记

    JDBC的常用接口的步骤, 1使用Driver或者Class.forName()进行注册驱动: 2使用DriverManager进行获取数据库的链接.使用Connection获取语句对象.使用语句对象 ...

  7. 移动APP用例设计中的关键点(转载)

    http://www.51testing.com/html/52/n-4421752.html 在测试工作中我们需要不断的总结和储备自己的知识和经验,譬如具备特定属性.环境以及场景,如:PC,手机,智 ...

  8. JS--操作DOM树

    <ul id="ul1"> <li id="li1">111</li> <li id="li2"& ...

  9. CML\LVDS

    LVDS和CML电平应用区别 https://wenku.baidu.com/view/6bb0066f011ca300a6c3908c.html

  10. Html5 拖拽api

    拖拽要有两个元素,一个是要拖动的元素,一个是要放置到的元素. 1, 在默认情况下, 只有图片和文字是可以拖拽的,其它元素都不可以.因此要想使一个元素可拖动,必须设置它的draggable 属性为tru ...