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日志配置如下(简单的文件示意):
<?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日志文件输出大小与个数相关的参数,具体有两个:
- 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日志输出文件控制属性很多,通常是多个属性结合使用,或者多个属性设置时有优先级,在配置中需要注意。
NLog日志框架-输出文件数量与大小控制相关推荐
- SparkSql 控制输出文件数量且大小均匀(distribute by rand())
@羲凡--只为了更好的活着 SparkSql 控制输出文件数量且大小均匀(distribute by rand()) Q:Spark如何控制文件你输出数量? A:这个简单,用 coalesce或者re ...
- 日志管理-NLog日志框架简写用法
日志管理-NLog日志框架简写用法 本文转载:http://www.blogjava.net/qiyadeng/archive/2013/02/27/395799.html 在.net中也有非常多的日 ...
- 关于web项目log日志指定输出文件位置配置
首先我们定义一个可以在运行时动态的找出项目的路径WebAppRootKey,这么做的原因是为了在后面配置log4j输出文件路径的时候能随心配置. <context-param><pa ...
- Liunx:核实文件数量和大小
简介:在A.B服务之间进行scp远程复制时,如果文件目录数量众多,并且总量庞大,那么由于网络抖动或者系统存储机制等原因,很容易出现复制多传,少传,漏传的现象.规避此类事件的方法为,首先压缩成tar包, ...
- NLog日志框架使用探究
前言 日志是每个程序的基本模块.本文是为了探究如何通过NLog方便及记录日志并通过Log4View工具收集日志统一查看. 为什么是NLog? 下载量NLog和Log4Net差不多,这两个日志模块是.N ...
- .Net学习——Nlog日志框架的使用
1什么是Nlog,为什么要使用Nlog作为日志框架 .Net没有内置的文本日志提供者,对于实际需要记录日志到文本文件中的需求不相匹配,常用的第三方日志框架包括Log4Net,Nlog,SeriLog. ...
- Nlog 日志框架使用介绍
原文地址:https://www.cnblogs.com/zh7791/p/12620439.html NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试 ...
- Tomcat输出catalina.out的大小控制
为什么80%的码农都做不了架构师?>>> 资源URL:http://download.csdn.net/detail/attagain/7771065 Tomcat默认生成的日 ...
- log4j控制日志的输出文件
Logger.getLogger有两种方式来定义 一般情况下,可以通过在log4j中定义一个appender, log4j.logger.com.soso.baike.service=DEBUG,Se ...
最新文章
- Flask-admin 使用总结
- The 4 Most Important Skills for a Software Developer
- hive 学习之异常篇
- 联机共享 Windows Live Writer 草稿
- python从入门到精通视频教程百度云-let's python从入门到精通视频教程
- php的主要架构,php运行原理与基本结构
- MySQL查询本周、上周、本月、上个月份数据的sql代码
- 第十六节: EF的CodeFirst模式通过Fluent API修改默认协定
- ubantu获取信息_Ubuntu 下查看CPU 信息命令
- 逻辑回归、线性回归直观感受
- MATLAB神经网络应用之Elman神经网络
- HTML5,不只是看上去很美 (第一弹:彩虹爆炸图)
- 编程猫python教学_有老师使用过编程猫进行教学吗?
- 参加第一届“SLAM技术及应用”暑期学校暨研讨会和全国SLAM技术论坛有感
- 服务器esxi虚拟机黑苹果性能,EXSi安装Mac打造Mac Pro
- android studio大作业-简易计算器实现
- 如何使用Couchbase实现文档版本控制
- CDMA与OFDMA的比较
- github国内镜像
- Unity UI架构设计理念