NLog文件输出项主要在Target项中设置,具体参看网址:https://github.com/NLog/NLog/wiki/File-target
在具体配置与测试中,发现文件生成的数量大小受文件名称定义影响,在NLog.config初步定义三个文件名称:
结合上图说明Nlog日志文件输出大小与个数相关的参数,具体有两个:
- fileName属性:上述中定义了三种方式文件名;
- 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)来表示。