NLog日志使用方法

Nlog是一款可以通过自动化配置来把log信息指定写入 win console,Sql server,甚至是通过STMP 发送邮件的log engine

首先下载Nlog DLL,通过网上直接download 或者nuget 下载DLL都可以。

http://nlog-project.org/download/

然后把下载下来的Nlog.dll ,Nlog,extension.dll 加入项目reference.

我暂时只加载了Nlog,因为还没去研究Nlog.extension有什么功能。

之后就是配置文件了,(Nlog Configuration), 它其实是一个 config文件Name:(Nlog.config)

格式如下:

01 <?xml
version=
"1.0" encoding="utf-8" ?>
02 <nlog
xmlns=
"http://www.nlog-project.org/schemas/NLog.xsd"
03       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
04  
05   <!--
06   See http://nlog-project.org/wiki/Configuration_file
07   for
information on customizing logging rules and outputs.
08    -->
09   <targets>
10     <!--
add your targets here -->
11      
12     <!--
13     <target
xsi:type=
"File" name="f" fileName="${basedir}/logs/${shortdate}.log"
14             layout="${longdate}
${uppercase:${level}} ${message}"
 />
15     -->
16   </targets>
17  
18   <rules>
19     <!--
add your logging rules here -->
20      
21     <!--
22     <logger
name=
"*" minlevel="Trace" writeTo="f" />
23     -->
24   </rules>
25 </nlog>

或者如果你是WebAPP的话,可以把config直接写在web.config的<configuration>节点下,我比较喜欢这种

<configuration>

<configSections>

<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>

</configSections>

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<!--  See http://nlog-project.org/wiki/Configuration_file  for information on customizing logging rules and outputs.   -->

<targets>

<target xsi:type="File" name="f" fileName="${basedir}/APP_Data/logs/${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${message}" />

</targets>

<rules>

<logger name="*" minlevel="Trace" writeTo="f" />

</rules>

</nlog>

</configuration>

接下来就是比较有技术含量的东西了,如何把log写入数据库,或者发邮件通知,也是通过配置文件,配置如下:

<?xml version="1.0" encoding="utf-8" ?>
02 <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
03       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
04    
05   <!--nlog
debug start-->
06   <!--<nlog
xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
07         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
08         throwExceptions="true"
internalLogFile="c:\nlog.txt" internalLogLevel="Debug" autoReload="true">-->
09   <!--nlog
debug end-->
10    
11   <!--
12   See http://nlog-project.org/wiki/Configuration_file
13   for
information on customizing logging rules and outputs.
14    -->
15   <targets>
16     <!--
add your targets here -->
17  
18     <!--<target
xsi:type="File" name="f" fileName="${basedir}/App_Data/logs/${shortdate}.log"
19             layout="${longdate}
${uppercase:${level}} ${message}" />-->
20  
21     <target xsi:type="File" name="f" fileName="${basedir}/App_Data/logs/${shortdate}.log"
22             layout="${longdate}
${uppercase:${level}} ${loginuser} ${message} ${machinename} ${exception:format=type} ${callsite:className=true} ${logger} ${exception:stacktrace} ${exception:format=tostring}"
 />
23  
24     <target xsi:type="Database" name="db"  dbProvider="mssql" commandText="Insert
into NLog_Record(time_stamp, level, host, url, type, source, logger, message, stacktrace, detail, loginuser) Values(@time_stamp, @level, @host, @url, @type, @source, @logger, @message, @stacktrace, @detail, @loginuser);"
 connectionString="Data
Source=localhost;Initial Catalog=Log_DB;Persist Security Info=True;User ID=資料庫登入帳號;Password=資料庫登入密碼;"
>
25       <!--<parameter
name="@time_stamp" layout="${longdate}" />-->
26       <parameter name="@time_stamp" layout="${date:format=yyyy\-MM\-dd
HH\:mm\:ss.fff} "
 />
27       <parameter name="@level" layout="${level}" />
28       <parameter name="@host" layout="${machinename}" />
29       <parameter name="@url" layout="${aspnet-request:serverVariable=url}" />
30       <parameter name="@type" layout="${exception:format=type}" />
31       <parameter name="@source" layout="${callsite:className=true}" />
32       <parameter name="@logger" layout="${logger}" />
33       <parameter name="@message" layout="${message}" />
34       <parameter name="@stacktrace" layout="${exception:stacktrace}" />
35       <parameter name="@detail" layout="${exception:format=tostring}" />
36       <parameter name="@loginuser" layout="${loginuser}" />
37     </target>
38  
39     <target xsi:type="Mail" name ="FatalMail"
40             smtpServer="smtp.gmail.com"
41             smtpPort="587"
42             smtpAuthentication="Basic"
43             smtpUsername="你要寄出的Email帳號"
44             smtpPassword="寄出Email的密碼"
45             enableSsl="true"
46             addNewLines="true"
47             from="寄出的Email"
48             to="收信的Email,收信的Email2"
49             subject="${machinename}
於 ${shortdate} ${time} Log級別:${level} 於 ${callsite:className=true}, 出現 ${exception:format=type}!"
50             header="========================================================================="
51             body="${newline}
52                   發生時間:${longdate}
${newline}${newline}
53                   Log等級:${level:uppercase=true}
${newline}${newline}
54                   Logger:${logger}
${newline}${newline}
55                   Source:${callsite:className=true}
${newline}${newline}
56                   使用者:${loginuser}
${newline}${newline}
57                   Exception類別:${exception:format=type}
${newline}${newline}
58                   錯誤訊息:${message}
${newline}${newline}"
59             footer="========================================================================="
60         />
61  
62     <target bufferSize="5" name="ErrorMail" xsi:type="BufferingWrapper">
63       <target xsi:type="Mail"
64               smtpServer="smtp.gmail.com"
65               smtpPort="587"
66               smtpAuthentication="Basic"
67               smtpUsername="你要寄出的Email帳號"
68               smtpPassword="寄出Email的密碼"
69               enableSsl="true"
70               addNewLines="true"
71               from="寄出的Email"
72               to="收信的Email,收信的Email2"
73               subject="${machinename}
於 ${shortdate} ${time} Log級別:${level} 出現錯誤!"
74               header="========================================================================="
75               body="${newline}
76                     發生時間:${longdate}
${newline}${newline}
77                     Log等級:${level:uppercase=true}
${newline}${newline}
78                     Logger:${logger}
${newline}${newline}
79                     Source:${callsite:className=true}
${newline}${newline}
80                     使用者:${loginuser}
${newline}${newline}
81                     Exception類別:${exception:format=type}
${newline}${newline}
82                     錯誤訊息:${message}
${newline}${newline}"
83               footer="========================================================================="
84             />
85     </target>
86  
87   </targets>
88  
89   <rules>
90     <!--
add your logging rules here -->
91  
92     <logger name="*" maxlevel="Info" writeTo="f" />
93     <logger name="*" minlevel="Warn" writeTo="db" />
94     <logger name="*" level="Fatal" writeTo="FatalMail" />
95     <logger name="*" level="Error" writeTo="ErrorMail" />
96  
97   </rules>
98 </nlog>

需要注意的是,配置文件的

<target> 存放log的地方,文件          /数据库/邮件

<rule>    是写入/显示log的方式

最后就是Nlog的语句了:

using NLog;

private static Logger logger = LogManager.GetCurrentClassLogger();

public ActionResult Index()

{

logger.Trace("Sample trace message");

logger.Debug("Sample debug message");

logger.Info("Sample informational message");

logger.Warn("Sample warning message");

logger.Error("Sample error message");

logger.Fatal("Sample fatal error message");

// alternatively you can call the Log() method

// and pass log level as the parameter.

logger.Log(LogLevel.Info, "Sample informational message");

如果你写入的是consoleApp,你会发现不同的log颜色会不同,一目了然

NLog日志使用方法,布布扣,bubuko.com

时间: 2024-10-16 15:55:34

NLog日志使用方法的相关文章

从零开始,搭建博客系统MVC5+EF6搭建框架(3),添加Nlog日志、缓存机制(MemoryCache、RedisCache)、创建控制器父类BaseController

一.回顾系统进度以及本章概要 目前博客系统已经数据库创建.以及依赖注入Autofac集成,接下来就是日志和缓存集成,这里日志用的是Nlog,其实还有其他的日志框架如log4,这些博客园都有很多介绍,这里就不说了,缓存机制用的是微软自带的MemoryCache和比较流行Redis,这里我也只是了解使用,没有做更升入的研究,以后好好学一下Redis,然后就是实现一个BaseController父类用来重写JsonResult方法为的是返回时间格式问题,默认json返回的时间格式是Date(84923

ASP.NET Core使用Elasticsearch记录NLog日志

ASP.NET Core使用Elasticsearch记录NLog日志 1.新建一个 ASP.NET Core项目 2.安装Nuge包 运行:Install-Package NLog.Web.AspNetCore 运行:Install-Package NLog 运行:Install-package NLog.Targets.ElasticSearch 3.编写NLog配置文件(NLog.config) <?xml version="1.0" encoding="utf-

NLog日志框架使用探究-2

目录 前言 自定义参数 日志输出方式 文件 网络传输 数据库 科学使用 参考文档 前言 在一年前,我写过一篇关于NLog入门文章<NLog日志框架使用探究-1>,文章简单的介绍了Nlog的基本使用以及如何使用Log4View2工具配合统一收集日志查看.本篇文章会记录一些NLog常用的用法. 自定义参数 有时候我们需要根据我们的业务特征自定义一些参数.比如有个唯一的Id.这时候我们可以自定义参数,将Id提取出来,而不是放到日志内容中,这样可以方便检索. 在EventProperties Layo

日志分析方法概述(转)

原文:日志分析方法概述 日志在计算机系统中是一个非常广泛的概念,任何程序都有可能输出日志:操作系统内核.各种应用服务器等等.日志的内容.规模和用途也各不相同,很难一概而论. 本文讨论的日志处理方法中的日志,仅指Web日志.其实并没有精确的定义,可能包括但不限于各种前端Web服务器――apache.lighttpd.tomcat等产生的用户访问日志,以及各种Web应用程序自己输出的日志. 在Web日志中,每条日志通常代表着用户的一次访问行为,例如下面就是一条典型的apache日志: 211.87.

C# winform程序将异常写入日志的方法

转载地址:夏日里的春天的博客 http://hi.baidu.com/honfei/item/3a6f212998910099b73263b5 //出错之后计入日志文件        private void SqlConnError(SqlException e2)        {            //如果是同一天的话,则打开文件在末尾写入.如果不是同一天,则创建文件写入文件 //判断是否存在文件            if (File.Exists(DateTime.Today.To

日志分析方法概述

最近几年日志分析这方面的人才需求越来越多,主要伴随数据挖掘的快速发展而迅速增长的.碰巧又在工作中又接触到一些日志记录方面的工作,就顺便了解一下日志系统的整个流程.下面这篇文章转自百度同学的一篇文章,针对大规模日志分析,联系到hadoop,hive的解决方案,阐述的比较全面. 另外就是阿里已经开发出类似的系统odps-通过sql语言进行数据的分析处理,详情见:http://102.alibaba.com/competition/addDiscovery/faq.htm --------------

Linux认证用Syslog记录UNIX和Windows日志的方法

Linux认证用Syslog记录UNIX和Windows日志的方法,在网络中安排一台专用的日志服务器来记录系统日志是一个比较理想的方案.本文以FreeBSD下的syslog为例,介绍如何利用freebsd的syslogd来记录来自UNIX和windows的log信息. 在比较大规模的网络应用或者对安全有一定要求的应用中,通常需要对系统的日志进行记录分类并审核,默认情况下,每个系统会在本地硬盘上记录自己的日 志,这样虽然也能有日志记录,但是有很多缺点:首先是管理不便,当服务器数量比较多的时候,登陆

spring AOP切面日志 拦截方法中有同名方法问题

代码: @ResponseBody @RequestMapping("/login.do") public Json login(SysUserPM sysUserPM, HttpSession session) { Json j = new Json(); SysUserPM sysUser = sysUserServiceI.doLogin(sysUserPM); if (sysUser != null) { System.out.println("后台用户登录成功!&q

Android应用启动时间及启动日志获取方法

1. Android应用中,可以使用如下方式进行应用启动时间的查看 2. 启动日志获取方法: