NLog日志框架-输出文件数量与大小控制

  • 目录

  • 概述
  • 一、NLog使用说明
  • 二、文件输出控制配置
    • 1.规则说明
    • 2.演示案例
  • 总结



概述

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

NLog支持应用程序类型
序号应用程序类型
1.NET Framework
2ASP.NET Core
3NET Core Console
4C/C++
5COM interop API


一、NLog使用说明

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

  1. NLog通常使用软件包管理器Nuget进行下载或者安装;
  2. 使用NLog.Config文件进行日志配置;
  3. 在代码中使用类实例函数打印对应日志信息。
  • NLog.Config日志配置如下(简单的文件示意):

	  	  
  • 在代码中打印对应日志信息
  • /// /// 写日志文件测试/// /// 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.config日志输出文件控制属性很多,通常是多个属性结合使用,或者多个属性设置时有优先级,在配置中需要注意。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部