• 目录

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

概述

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

NLog支持应用程序类型
序号 应用程序类型
1 .NET Framework
2 ASP.NET Core
3 NET Core Console
4 C/C++
5 COM 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.config日志输出文件控制属性很多,通常是多个属性结合使用,或者多个属性设置时有优先级,在配置中需要注意。

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

  1. SparkSql 控制输出文件数量且大小均匀(distribute by rand())

    @羲凡--只为了更好的活着 SparkSql 控制输出文件数量且大小均匀(distribute by rand()) Q:Spark如何控制文件你输出数量? A:这个简单,用 coalesce或者re ...

  2. 日志管理-NLog日志框架简写用法

    日志管理-NLog日志框架简写用法 本文转载:http://www.blogjava.net/qiyadeng/archive/2013/02/27/395799.html 在.net中也有非常多的日 ...

  3. 关于web项目log日志指定输出文件位置配置

    首先我们定义一个可以在运行时动态的找出项目的路径WebAppRootKey,这么做的原因是为了在后面配置log4j输出文件路径的时候能随心配置. <context-param><pa ...

  4. Liunx:核实文件数量和大小

    简介:在A.B服务之间进行scp远程复制时,如果文件目录数量众多,并且总量庞大,那么由于网络抖动或者系统存储机制等原因,很容易出现复制多传,少传,漏传的现象.规避此类事件的方法为,首先压缩成tar包, ...

  5. NLog日志框架使用探究

    前言 日志是每个程序的基本模块.本文是为了探究如何通过NLog方便及记录日志并通过Log4View工具收集日志统一查看. 为什么是NLog? 下载量NLog和Log4Net差不多,这两个日志模块是.N ...

  6. .Net学习——Nlog日志框架的使用

    1什么是Nlog,为什么要使用Nlog作为日志框架 .Net没有内置的文本日志提供者,对于实际需要记录日志到文本文件中的需求不相匹配,常用的第三方日志框架包括Log4Net,Nlog,SeriLog. ...

  7. Nlog 日志框架使用介绍

    原文地址:https://www.cnblogs.com/zh7791/p/12620439.html NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试 ...

  8. Tomcat输出catalina.out的大小控制

    为什么80%的码农都做不了架构师?>>>    资源URL:http://download.csdn.net/detail/attagain/7771065 Tomcat默认生成的日 ...

  9. log4j控制日志的输出文件

    Logger.getLogger有两种方式来定义 一般情况下,可以通过在log4j中定义一个appender, log4j.logger.com.soso.baike.service=DEBUG,Se ...

最新文章

  1. Flask-admin 使用总结
  2. The 4 Most Important Skills for a Software Developer
  3. hive 学习之异常篇
  4. 联机共享 Windows Live Writer 草稿
  5. python从入门到精通视频教程百度云-let's python从入门到精通视频教程
  6. php的主要架构,php运行原理与基本结构
  7. MySQL查询本周、上周、本月、上个月份数据的sql代码
  8. 第十六节: EF的CodeFirst模式通过Fluent API修改默认协定
  9. ubantu获取信息_Ubuntu 下查看CPU 信息命令
  10. 逻辑回归、线性回归直观感受
  11. MATLAB神经网络应用之Elman神经网络
  12. HTML5,不只是看上去很美 (第一弹:彩虹爆炸图)
  13. 编程猫python教学_有老师使用过编程猫进行教学吗?
  14. 参加第一届“SLAM技术及应用”暑期学校暨研讨会和全国SLAM技术论坛有感
  15. 服务器esxi虚拟机黑苹果性能,EXSi安装Mac打造Mac Pro
  16. android studio大作业-简易计算器实现
  17. 如何使用Couchbase实现文档版本控制
  18. CDMA与OFDMA的比较
  19. github国内镜像
  20. Unity UI架构设计理念

热门文章

  1. 如何爱护自己的本本----学习
  2. 说说计算机发展史在你印象里都有哪些内容,感情说说很现实的句子:一台电脑,一部手机,抛弃所有。...
  3. 计算机技术在设计中的应用浅论,论计算机技术在美术设计中的应用
  4. 讲给23岁以上的女生 || 讲给23岁以上的男生
  5. react 自定义hook
  6. java匿名接口实现
  7. 点积和叉积在计算机图形学的应用
  8. 【c/c++】Old Bill
  9. [R]如何利用rnorm生成亂數矩陣和時間序列亂數?
  10. jQuery-UI组件Effects