Nlog- Application Logging in C#

当你在谷歌搜索 Application  Loggin in C#,排在最前面的是这个 .NET Logging Tools and Libraries ,点击进去你会发现里面收录了不错的日记工具及文章。

这里我要介绍的是NLog。log4net 也是一个不错的选择。

NLog 官网:http://nlog-project.org/ 

NLog Github: https://github.com/NLog/NLog/wiki/Tutorial

先介绍使用方法:

1.安装

用Nuget 安装 NLog.Config。

Install-Package NLog.Config

这样他就会把需要的包都安装引入进到所安装的项目了。

2.配置

配置日记记录的形式,存储的地方等。安装好NLog之后,会自动生成一个NLog.config

打开它,里面其实会有详细的Demo教你怎么配置。

首先<target>, target 说明日志存放的地方。

    <!-- 
    add your targets here 
    See https://github.com/nlog/NLog/wiki/Targets for possible targets.
    See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
    -->

    <!--
    Write events to a file with the date in the filename. 
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
            layout="${longdate} ${uppercase:${level}} ${message}" />
    -->
    <target xsi:type="File" name="debugfile" fileName="${basedir}/logs/${shortdate}.debug.html"
            layout="Date: ${longdate} Logger: ${logger} Level: ${uppercase:${level}} &lt;BR&gt; Message: ${message} &lt;BR&gt;&lt;HR Size=1&gt;"/>
    <target xsi:type="File" name="errorfile" fileName="${basedir}/logs/${shortdate}.error.html"
            layout="Date: ${longdate} Logger: ${logger} Level: ${uppercase:${level}} &lt;BR&gt; Message: ${message} &lt;BR&gt;&lt;HR Size=1&gt;" />

其次是定义规则,日记也分为几个级别(Debug,Info,Warn,Error,Fatal 从左到右级别增加),不同的日记可以分开管理记录。

  <rules>
    <!-- add your logging rules here -->

    <!--
    Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace)  to "f"
    <logger name="*" minlevel="Debug" writeTo="f" />
    -->

    <logger name="*" minlevel="Debug" maxlevel="Debug" writeTo="debugfile" /> 
    <logger name="*" minlevel="Info" writeTo="errorfile"/>
    
  </rules>

最后就是调用了。

using System.Web.Mvc;
using NLog;

namespace App.Controllers
{
    public class BaseController : Controller
    {
        protected Logger Log { get; private set; }

        protected BaseController()
        {
            Log = LogManager.GetLogger(GetType().FullName);
        }
    }
}
using System;

namespace App.Controllers
{
    public class UserController : BaseController
    {
        public void Index()
        {
            Log.Debug("This is Debug");
            Log.Error(new Exception("除数不能为零"));
            Log.Info("使用起来简单吧");
        }
    }
}

出来的效果:

2016-06-13.debug.html

Date: 2016-06-13 14:47:17.5376 Logger: App.Controllers.UserController Level: DEBUG <BR> Message: This is Debug <BR><HR Size=1>

2016-06-13.error.html

Date: 2016-06-13 14:47:17.5486 Logger: App.Controllers.UserController Level: ERROR <BR> Message: System.Exception: 除数不能为零 <BR><HR Size=1>
Date: 2016-06-13 14:47:17.5486 Logger: App.Controllers.UserController Level: INFO <BR> Message: 使用起来简单吧 <BR><HR Size=1>

 上面target 只有 file。其实还有很多种形式的输出,这个要在下一篇再写了。

posted @ 2016-06-13 14:57  ILONEY  阅读(281)  评论(0编辑  收藏