zoukankan      html  css  js  c++  java
  • 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。其实还有很多种形式的输出,这个要在下一篇再写了。

  • 相关阅读:
    Android实战技巧之四十九:Usb通信之USB Host
    Netty in Action (七) 第三章节 Netty组件和设计
    打造敏捷的自组织团队
    Cocos2d-x移植到Android平台编译的两个文件Android.mk和Application.mk
    Codeforces Round #306 (Div. 2) (ABCE题解)
    事情非常重要却总不想開始怎么办
    <html>
    Android中Activity与Task相关的属性解析
    大话设计模式—策略模式
    android hander怎样避免内存泄露
  • 原文地址:https://www.cnblogs.com/iloney/p/5580635.html
Copyright © 2011-2022 走看看