添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
踢足球的豌豆  ·  window.open.postMessag ...·  1 年前    · 
俊秀的熊猫  ·  scala - Apache Spark, ...·  1 年前    · 
坏坏的小狗  ·  MySQL ...·  1 年前    · 

Nlog是一个免费开源的.NET日志框架,拥有丰富的日志路由(XML配置表)和强大的管理能力。NLog便于实现代码的日志记录并进行高效管理,可满足各类应用程序的日志需求。它可以处理.NET语言发出的任何诊断信息,便于对上下文进行扩充,并可根据用户的喜好,将其存储到文件中、数据库中,或发送邮件

NLog支持应用程序类型 序号应用程序类型1.NET Framework2ASP.NET Core3NET Core Console4C/C++5COM interop API


一、NLog使用说明

NLog使用步骤简单,具体包括以下san大步骤:

  1. NLog通常使用软件包管理器Nuget进行下载或者安装;
  2. 使用NLog.Config文件进行日志配置;
  3. 在代码中使用类实例函数打印对应日志信息。
  • 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"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Off" 
      internalLogFile="c:\temp\nlog-internal.log">
  <variable name="myvar" value="myvalue"/>
  <targets>	  
	<!--定义文件:详细见Nlog文件配置-->
    <target xsi:type="File" name="SimpleDemoFile" 
			fileName="../Logs/Demo/SimpleDemoFile.txt"			
			layout="${message}" encoding="UTF-8"  />	  
  </targets>
  <rules>
	  <!--日志输出控制,writeTo的属性为上面定义的文件-->
    <logger name="SimpleDemo" level="Error" writeTo="SimpleDemoFile"/>
  </rules>
</nlog>
  • 在代码中打印对应日志信息
  • /// <summary>
            /// 写日志文件测试
            /// </summary>
            /// <param name="threadIndex"></param>
            private static void Runtest(object threadIndex)
                for (int ii = 0; ii < 1000; ii++)
                    logger.Error($"这是Tracer日志 numberIndex:{ii} threadIndex{(int)threadIndex}");
                    logger.Error($"这是Debug日志 numberIndex:{ii} threadIndex :{(int)threadIndex} ");
                    logger.Error($"这是Info日志 numberIndex:{ii} threadIndex:{(int)threadIndex}");
                    logger.Error($"这是Warn日志 numberIndex:{ii} threadIndex:{(int)threadIndex}");
                    logger.Error($"这是Error日志 numberIndex:{ii} threadIndex:{(int)threadIndex}");
                    logger.Error($"这是Fatal日志 numberIndex:{ii} threadIndex:{(int)threadIndex}");
                    Thread.Sleep(5);
    


    二、日志文件输出控制


    1.配置规则说明

    NLog文件输出项主要在Target项中设置,具体参看网址https://github.com/NLog/NLog/wiki/File-target

    在具体配置与测试中,发现文件生成的数量大小受文件名称定义影响,在NLog.config初步定义三个文件名称:

    结合上图说明Nlog日志文件输出大小与个数相关的参数,具体有两个:

    1. fileName属性:上述中定义了三种方式文件名;
    2. archiveAbovesize属性:文件归档大小尺寸;

     在Nlog的官网中对这俩各属性说明,具体如下:

    在实际测试时发现,有时候设置的archiveAbovesize属性值=10240B(10kb),日志文件并未按照设置的大小输出,经过多轮测试,明确了日志文件的大小个数与文件名称有非常密切的关系,而NLog的配置文件中并未对此进行详细说明,本章根据测试记录对日志文件的输出数量\大小控制规则进行详细说明:

    Nlog日志文件输出数量大小控制规则说明 序号fileName属性值archiveAbovesize属性值输出现象1

    文件路径中的文件名为常量;

    Eg:D:\SimpleFileDemo.txt

    (图1中的文件2路径)

    不设置该属性

    (Nlog.config文件无此属性值)只输出单个日志文件2

    添加该属性,设置单个文件的最大尺寸值;

    (例如:Nlog.config文件

    archiveAbovesize=10240)则输出的日志文件大小按设置值大小生成3

    文件路径的文件名包含日期时间变量

    Eg:D:\ LoggerDemo_

    ${date:format=yyyy-MM-dd HH_mm_ss}.txt

    (图1中的文件1路径)

    不设置该属性

    (Nlog.config文件无此属性值)则每秒输出一个日志文件4

    添加该属性,设置单个文件的最大尺寸值;

    (例如:Nlog.config文件

    archiveAbovesize=10240

    每秒生成文件的Size< archiveAbovesize;

    则按秒生成日志文件5

    每秒生成文件的Size> archiveAbovesize;

    则按预设的尺寸生成文件,当跨秒时重新生成日志文件6

    文件路径的文件名包含日期时间变量且使用Cached关键词

    Eg:D:\ LoggerDemo_

    ${cached:${date:format=yyyy-MM_dd HH_mm_ss}}.txt (Nlog.config文件无此属性值)只输出单个日志文件7

    添加该属性,设置单个文件的最大尺寸值;

    (例如:Nlog.config文件

    archiveAbovesize=10240)则输出的日志文件尺寸按设置值大小生成

    2.演示验证

    结合上述规则说明,配置Nlog.config文件,演示日志文件示例:

    • 文件名为常量,不设置文件尺寸;

    输出日志文件效果示意:

    •  文件名为常量,设置文件尺寸,单个文件大小为20KB,即archiveAbovesize=20480;

    输出日志文件示意:

    • 文件名中包含时间变量,时间变量定位到秒${date:format=yyyy-MM-dd HH_mm_ss},

    不设置单个文件的归档尺寸。

    • 文件名中包含时间变量,时间变量定位到秒${date:format=yyyy-MM-dd HH_mm_ss},

    单个文件大小为20KB,即archiveAbovesize=20480;

    • 文件名中包含时间变量,时间变量定位到秒${date:format=yyyy-MM-dd HH_mm_ss},

    单个文件大小为100KB,即archiveAbovesize=102400;

    • 文件路径的文件名包含日期时间变量,且使用Cached关键词,时间变量定位到秒${date:format=yyyy-MM-dd HH_mm_ss},不设置单个文件大小:
    • 文件路径的文件名包含日期时间变量,且使用Cached关键词,时间变量定位到秒${date:format=yyyy-MM-dd HH_mm_ss},单个文件大小为200KB,即archiveAbovesize=204800;
    NLog是用于.NET的免费日志记录平台,具有丰富的日志路由和管理功能。 无论它的大小或复杂程度如何,都可以轻松为您的应用程序生成和管理高质量的日志。 它可以处理从任何.NET语言发出的诊断消息,使用上下文信息对其进行扩充,根据您的偏好对其进行格式化,并将其发送到一个或多个目标,例如文件或数据库。 主要版本和次要版本将发布在。 有关较小的更新,请在关注我们 有关配置中的可能选项,请检查“ 有麻烦吗? 查看 :information_selector: 寻找NLog 5? 只需安装NLog 4.5+! NLog 4.5实现了NLog 5中添加的平台(.NET Standard 1,.NET Standard 2,UWP等
    在项目中,使用NLog记录日志,这是一个很正常的操作。 目前处理的一个项目中,有8个程序执行,每个都有日志文件;然后由一个日志记录会比较频繁,每秒有接近1M的日志记录,而且都20次,在开发的机器上,使用SSD固态硬盘,程序执行很正常。 发布到服务器电脑上,其上的磁盘是机械磁盘,使用的是Info级别,发现在这样的日志量和频率下,服务程序出现严重的问题,每次的服务响应有2秒之多;查找其他原因无果,后来...
    NLog是一个基于.NET平台编写的日志记录类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码。可以在任何一种.NET语言中输出带有上下文的(contextual information)调试诊断信息,根据喜好配置其表现样式之后发送到一个或多个输出目标(target)中。官网地址:https://nlog-project.org/文档地址:https://github.com/NLog/NLog/wiki (2)代码实现 (3)运行结果 (2)配置文件
    新建控制台项目,选择项目右键属性,选择 “ 管理NuGet程序包(N)... ”,搜索NLog ,添加NLog,版本4.7.14 1、新建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方便及记录日志并通过Log4View工具收集日志统一查看。 为什么是NLog? 下载量NLog和Log4Net差不多,这两个日志模块是.Net平台使用最多的两大日志模块。 Log4Net上次更新已经是17年3月 NLog更新的比较频繁,开发者比较活跃,有问题的话修复更及时。 NLog是适用于各种.net平台(包括.net standard)的灵活而免费的日志记录平台。通过NLog, 可以轻松地写入多个目标。(数据库、文件控制台), 并动.
    这句话想要表达的意思是,数量级为O(2Nlog2N)的算法复杂度记作Ω(2Nlog2N),但不能直接将其记作θ(2Nlog2N)。 Ω记号表示算法复杂度的下界,即算法最少需要的时间复杂度,而θ记号则表示算法复杂度的上下界,即算法的时间复杂度介于一个常数乘以给定函数之间。因此,仅有Ω记号并不能准确地描述算法的时间复杂度。 实际上,在某些情况下,算法的实际时间复杂度可能与O(2Nlog2N)相等,但在一般情况下,复杂度会略低于O(2Nlog2N)。因此,我们不能将这个复杂度直接描述为θ(2Nlog2N),而应该用Ω(2Nlog2N)来表示。