NLog日志框架-输出文件数量与大小控制
-
目录
- 概述
- 一、NLog使用说明
- 二、文件输出控制配置
- 1.规则说明
- 2.演示案例
- 总结
概述
Nlog是一个免费开源的.NET日志框架,拥有丰富的日志路由(XML配置表)和强大的管理能力。NLog便于实现代码的日志记录并进行高效管理,可满足各类应用程序的日志需求。它可以处理.NET语言发出的任何诊断信息,便于对上下文进行扩充,并可根据用户的喜好,将其存储到文件中、数据库中,或发送邮件。
| 序号 | 应用程序类型 |
|---|---|
| 1 | .NET Framework |
| 2 | ASP.NET Core |
| 3 | NET Core Console |
| 4 | C/C++ |
| 5 | COM interop API |
一、NLog使用说明
NLog使用步骤简单,具体包括以下san大步骤:
- NLog通常使用软件包管理器Nuget进行下载或者安装;
- 使用NLog.Config文件进行日志配置;
- 在代码中使用类实例函数打印对应日志信息。
- 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日志文件输出大小与个数相关的参数,具体有两个:
- fileName属性:上述中定义了三种方式文件名;
- archiveAbovesize属性:文件归档大小尺寸;
在Nlog的官网中对这俩各属性说明,具体如下:


在实际测试时发现,有时候设置的archiveAbovesize属性值=10240B(10kb),日志文件并未按照设置的大小输出,经过多轮测试,明确了日志文件的大小个数与文件名称有非常密切的关系,而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日志输出文件控制属性很多,通常是多个属性结合使用,或者多个属性设置时有优先级,在配置中需要注意。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
