NLog日志管理工具
Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台,保存到文本,也可以很方便的记录到数据库中,或者发送Emial到指定账户。
可以在官网 这里下载Nlog:http://nlog-project.org/
如果想使用NuGet下载,可以使用Visual Studio(本人使用的Visual Studio 2015) 可以直接在 工具->NuGet吃-> 程序包管理控制台 ->输入 PM>Install-Package NLog.Config
安装好以后,在项目中就有了Nlog程序集和Nlog.config文件
打开Nlog.config文件,在target节点中,增加对数据库的配置。
在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">
<!--
###################nlog 日志输出配置文件####################
<targets /> - 定义日志的目标/输出
<rules /> - 定义日志的路由规则
<extensions /> - 从*.dll加载NLog扩展
<include /> - 导入外部配置文件
<variable /> - 为配置变量赋值
-->
<!--
########################## targets 输出目标 ##########################
name:节点/输出名称
xsi:type:输出类型 比如“File”,“Database”,“Mail”。如果你使用了名字空间,这个属性会被命名为 xsi:type.
fileName:日志的文件名
layout:布局功能。格式是${}。在括号中可以定义日期、log记录级别、调用程序等上下文信息。既可以规范的命名文件,也可以记录在日志中,方便分析。
-->
<targets>
<target name="exceptionFile" xsi:type="File" fileName="${basedir}/LogFile/${shortdate}/${logger}_${level}.txt" layout="[${longdate}][${level:uppercase=true}][${logger}]${newline}${message}${newline}"/>
<target name="db" xsi:type="Database" connectionstring="Server=XXXX;Database=XX;uid=XX;pwd=XX" commandText="insert into T_SystemLogs(createdate,origin,logLevel,message,stackTrace) values (@createdate,@origin,@logLevel,@message,@stackTrace)">
<!--日志发生时间-->
<parameter name="@createdate" layout="${longdate}"/>
<!--日志来源-->
<parameter name="@origin" layout="${callsite}"/>
<!--日志等级-->
<parameter name="@logLevel" layout="${level}"/>
<!--日志信息-->
<parameter name="@message" layout="${message}"/>
<!--堆栈信息-->
<parameter name="@stackTrace" layout="${stacktrace}"/>
</target>
<target name="message" xsi:type="Database" connectionstring="Server=XXXX;Database=XX;uid=XX;pwd=XX" commandText="insert into T_MessageRecord(createdate,origin,logLevel,message,stackTrace) values (@createdate,@origin,@logLevel,@message,@stackTrace)">
<!--日志发生时间-->
<parameter name="@createdate" layout="${longdate}"/>
<!--日志来源-->
<parameter name="@origin" layout="${callsite}"/>
<!--日志等级-->
<parameter name="@logLevel" layout="${level}"/>
<!--日志信息-->
<parameter name="@message" layout="${message}"/>
<!--堆栈信息-->
<parameter name="@stackTrace" layout="${stacktrace}"/>
</target>
</targets>
<!--
####################### rules路由规则 #####################
name:记录日志的名字。可以使用通配符*
minlevel:记录日志的最低级别,如配置为Debug,那么所有高于等于这个级别的日志都会写到日志文件里。
当然也可以指定maxlevel或者单一level,如level=“Debug”,那么只记录Debug级别的信息。也可以指定levels,格式为levels=“Debug,Info”。
maxlevel: 该规则所匹配日志范围的最高级别
level:该规则所匹配的单一日志级别
levels:该规则所匹配的一系列日志级别,由逗号分隔。
writeTo:写入的目标日志文件
final : 标记当前规则为最后一个规则。其后的规则即时匹配也不会被运行。
-->
<rules>
<logger name="*" minlevel="Info" writeTo="exceptionFile"/>
<logger name="*" minlevel="Error" writeTo="db"/>
<logger name="*" minlevel="Trace" writeTo="message"/>
<logger name="*" minlevel="Fatal" writeTo="db"/>
</rules>
</nlog>
在Web.Config中进行引用
<nlog>
<!--configuration是项目的文件夹,如果根目录可以不写-->
<include file="${basedir}/configuration/NLog.config" />
</nlog>
如果使用数据库记录文件的话需要增加一个表
CREATE TABLE [dbo].[T_SystemLogs](
,) NOT NULL,
) NOT NULL,
[Origin] [nvarchar](max) NULL,
) NULL,
[Message] [nvarchar](max) NULL,
[StackTrace] [nvarchar](max) NULL,
CONSTRAINT [PK_T_SystemLogs] PRIMARY KEY CLUSTERED
(
[LogId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
这样Nlog的配置就已经完成.
我们在类里使用时需要申明一下Logger变量
//引用Nlog
using NLog;
namespace XXXX
{
public partial class NlogText: System.Web.UI.Page
{
//声明变量
public static Logger logger = LogManager.GetCurrentClassLogger();
protected void Page_Load(object sender, EventArgs e)
{
//调用
logger.Info("My Test Log");
}
}
}
这样一个完整的Nlog就演示完成了.
在配置规则中 我们的Info方法是记录txt文档,其中
fileName="${basedir}/LogFile/${shortdate}/${logger}_${level}.txt"
生成的日志记录名的规范为 根目录/LogFile文件夹/当前日期文件夹(2015-08-01)格式/类名_等级(Info).txt
而logger.Error(""); 以及Trace/Fatal 都记录到了数据库中,可以在异常中使用这些方法捕获到数据库中,会自动记录哪个类中的方法出现的异常
当然我们也可以配置为将异常以邮件形式发送给我们
就在配置一个<target>节点
<target name="email" xsi:type="Email"
smtpServer="smtp:163.com" smtpPort="587" smtpAuthentication="Basic"
smtpUserName="XXX" smtpPassword="XX"
from="XXX@163.com" to="XXX@qq.com"
subject="${machinename}"
header="===================="
body="${newline}${message}${newline}"
footer="===================="
enableSsl="true" addNewLine="true"/>
<!--其中to:收件人的邮箱,可以发送多个收件人,使用逗号分开-->
NLog日志管理工具的更多相关文章
- NLog日志管理工具(转)
一.通过VS建立一个控制台应用程序. 二.打开程序包管理器控制台.具体操作如下:[工具]>[库程序包管理器]>[程序包管理器控制台]. 三.在程序包管理器控制台下输入命令:Install- ...
- Java程序员须知的七个日志管理工具(转)
Splunk vs. Sumo Logic vs. LogStash vs. GrayLog vs. Loggly vs. PaperTrails vs. Splunk>Storm 英文原文:T ...
- LogCook 一个简单实用的Android日志管理工具
众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能 ...
- 日志管理工具之logrotate
Logrotate配置和测试 logrotate软件是一个日志管理工具,用于非分隔日志,删除旧的日志文件,并创建新的日志文件,起到“转储作用”,可以为系统节省磁盘空间.logrotate是基于cron ...
- mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)
一.概述 由于服务器生成的二进制日志文件以二进制格式保存,所以如果要想检查这些文件的文本格式,就会用到mysqlbinlog日志管理工具. mysqlbinlog的语法如下: mysqlbinlog ...
- 系统自带的日志管理工具-rsyslogd
系统自带的日志管理工具-rsyslogd 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.日志管理简介 1.什么是日志 系统日志是记录系统中硬件.软件和系统问题的信息,同时还可以 ...
- Java程序员须知的七个日志管理工具
本文由 ImportNew - 赖 信涛 翻译自 takipiblog.欢迎加入翻译小组.转载请见文末要求. Splunk vs. Sumo Logic vs. LogStash vs. GrayLo ...
- web项目中日志管理工具的使用
在web项目中,很多时候会用到日志管理工具,常见的日志管理用具有:JDK logging(配置文件:logging.properties) 和log4j(配置文件:log4j.properties) ...
- CentOS7日志管理工具 journalctl
1.简介 日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息. Systemd统一管理所有Unit的启动日志.带来的好处就是,可以只用jo ...
随机推荐
- 如何在开机时让Tomcat以进程的方式启动
一. 安装tomcat服务 1. 打开cmd命令窗口,进入到"tomcat安装路径/bin"目录下,运行"service.bat install"命令,安装to ...
- Android 项目中文件夹的说明与作用(转)
(转自:http://blog.csdn.net/goodshot/article/details/11529731) Android 项目中文件夹的作用 1. src:存放所有的*.java源程序. ...
- DevOps Workshop 研发运维一体化第一场(微软亚太研发集团总部)
准备了近两周,写了大量的操作手册,设计了大量的动手实验场景,终于在中关村的微软大厦完成了两天的DevOps培训. 最初报名160人,按照之前的培训经验,一般能到一半就不错了,没想到这次现场登记人员就超 ...
- [转]大白话系列之C#委托与事件讲解(三)
本文转自:http://www.cnblogs.com/wudiwushen/archive/2010/04/21/1717378.html [我希望大家在看完文章的时候,多做做练习,自己也可以想个场 ...
- C#基础--基于POP3协议的邮件接收和基于STMP的邮件发送
最近在用outlook同步邮件.对邮件协议有一点兴趣.于是就去收集了一些资料,学习了一下如何通过.net来实现邮件的收发. 一:SMTP协议 1.什么是SMTP协议: SMTP目前 ...
- 123——Appium Girls活动
有感于Ruby Girls和Python Girls,在15年就想组织一次移动测试的妹子活动,框架选择Appium, 从15年夏天开始准备,申请Google的会议室,招募教练,开放报名,审核报名,到正 ...
- 03 Hibernate错题分析
1.在Hibernate中,以下关于主键生成器说法错误的是( C). A.increment可以用于类型为long.short或byte的主键 B.identity用于如SQL Server.DB2. ...
- AC日记——矩阵交换行 openjudge 1.8 01
01:矩阵交换行 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个5*5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,输出交换 ...
- lock关键字只不过是C#提供的语法糖
lock关键字只不过是C#提供的语法糖, 最终使用的还是Monitor类. Monitor类的Enter方法要求传入的参数不为null, 否则会有ArgumentNullException excep ...
- SQL连接查询
连接查询:通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join on 2.union 在关系数据库 ...