zoukankan      html  css  js  c++  java
  • NLog学习笔记一

    一、NLog是什么?

    NLog是一个基于.NET的免费的开源的日志记录类库。(官网:http://nlog-project.org/

    NLog特点如下:

    1. 配置简单方便。可以将配置信息写的应用程序的配置文件中,或者写到单独的 NLog.config 配置文件中。
    2. 修改配置信息后立即生效,不用重启应用程序。通过设置 <nlog autoReload="true" /> 来实现。
    3. 内置了丰富的模板变量layout renders。例如: ${date} , ${level} ,  ${message} 等。
    4. 可以将日志记录到多个目标targets。例如:控制台、输出窗口、文件、数据库、邮件等。
    5. 支持扩展,可自定义目标

    使用NLog的理由如下:

    1. 能够通过简单的配置和修改控制显示不同等级的跟踪信息。
    2. 将控制跟踪信息的显示与否的逻辑与代码分开,修改跟踪信息的显示不需要重新编译程序。

    二、第一个NLog程序

    1、创建控制台程序

    此处只是为测试NLog,所以创建一个简单控制台应用程序,名称为NLogConsoleDemo,如图:

    注意:此处选择的程序位置应选择应用程序可以创建文件的路径。

    2、引用NLog程序集

    可以通过两种方式应用NLog,分别如下:

    1)通过程序包管理控制台安装,命令如下: PM> Install-Package NLog.Config 。(推荐

    2)通过官网下载源码。

    通过方式一安装结果如图:

    注意:一定要修改NLog.config文件的属性中复制到输出目录的值为始终复制如果较新则复制

    3)添加代码

    建议通过 LogManager 创建一个私有静态( private sttatic )的 Logger 类对象进行日志记录,代码如下:

     1 using NLog;
     2 using System;
     3 using System.Collections.Generic;
     4 using System.Linq;
     5 using System.Text;
     6 using System.Threading.Tasks;
     7 
     8 namespace NLogConsoleDemo
     9 {
    10     class Program
    11     {
    12         private static Logger logger = LogManager.GetCurrentClassLogger();
    13 
    14         static void Main(string[] args)
    15         {
    16             LogTest();
    17             LogTest2();
    18 
    19             Console.ReadLine();
    20         }
    21 
    22         public static void LogTest()
    23         {
    24             logger.Trace("Sample trace message");
    25             logger.Debug("Sample debug message");
    26             logger.Info("Sample informational message");
    27             logger.Warn("Sample warning message");
    28             logger.Error("Sample error message");
    29             logger.Fatal("Sample fatal error message");
    30 
    31             // alternatively you can call the Log() method 
    32             // and pass log level as the parameter.
    33             logger.Log(LogLevel.Info, "Sample informational message");
    34         }
    35 
    36         public static void LogTest2()
    37         {
    38             int k = 42;
    39             int l = 100;
    40 
    41             logger.Trace("Sample trace message, k={0}, l={1}", k, l);
    42             logger.Debug("Sample debug message, k={0}, l={1}", k, l);
    43             logger.Info("Sample informational message, k={0}, l={1}", k, l);
    44             logger.Warn("Sample warning message, k={0}, l={1}", k, l);
    45             logger.Error("Sample error message, k={0}, l={1}", k, l);
    46             logger.Fatal("Sample fatal error message, k={0}, l={1}", k, l);
    47             logger.Log(LogLevel.Info, "Sample informational message, k={0}, l={1}", k, l);
    48         }
    49     }
    50 }
    View Code

    4)配置NLog

    可以在应用程序配置文件或NLog.config文件中配置NLog,此处我们直接修改NLog.config文件,修改后如下:

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
     3       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4       xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
     5       autoReload="true"
     6       throwExceptions="false"
     7       internalLogLevel="Off" internalLogFile="c:	emp
    log-internal.log" >
     8 
     9   <targets>
    10     <!--屏幕打印消息-->
    11     <target name="console" xsi:type="ColoredConsole" layout="${date:format=yyyy-MM-dd HH:MM:ss.ffff} | ${message}"/>
    12     <!--VS输出窗口-->
    13     <target name="debugger" xsi:type="Debugger" layout="${shortdate} | ${level:padding=-5} | ${message}" />
    14     <!--保存至文件-->
    15     <target name="error_file" xsi:type="File" maxArchiveFiles="30" fileName="${basedir}/logs/error.log" />
    16   </targets>
    17   <rules>
    18     <logger name="*" minlevel="Trace" writeTo="console" />
    19     <logger name="*" minlevel="Debug" writeTo="debugger" />
    20     <logger name="*" minlevel="Error" writeTo="error_file" />
    21   </rules>
    22 </nlog>
    View Code

    现在可以编译运行程序,测试运行是否正常。正常情况下,我们可以在控制台、输出窗口和日志文件中看到记录的日志信息。

    注意:在开发阶段,建议设置 <nlog throwExceptions="true" /> ,方便快速定位问题。

    参考资料

    1. http://nlog-project.org/
    2. https://github.com/NLog/NLog/wiki/Tutorial
    3. http://www.cnblogs.com/dflying/category/78087.html
    4. http://www.cnblogs.com/TianFang/p/4003749.html
  • 相关阅读:
    Linux学习笔记(第一章)
    C#中的抽象类有什么好处?究竟它是用来干事什么的呢?
    C#中的 增 、删、 改、 查功能
    在Visual C#中用ListView显示数据记录
    10.14JDBC之数据库连接池之C3P0
    10.19JDBC之使用C3P0连接池重新实现JDBCUtils方法
    10.12JDBC之DAO实现类的优化
    10.13JDBC之数据库连接池
    RhinoMock入门(3)——4种Mock类型
    wse说谈(3)——策略,用户令牌
  • 原文地址:https://www.cnblogs.com/CCHUncle/p/5198712.html
Copyright © 2011-2022 走看看