NLog输出目标及类型

原文 http://www.cnblogs.com/tongyi/p/NLog.html

targets:输出目标节点

target:配置一个输出目标

Type输出类型:

  • Console        输出到控制台
  • Debugger     输出到VS输出窗口
  • File        输出到文件
  • Mail        输出为邮件发送
  • Network        输出到网络地址
  • Database        输出到数据库

<targets async=” Boolean”>  //是否异步
  <target
 xsi:type="File"               //输出类型
          name="String"                //节点名称
          layout="Layout"             //日志输入格式
          header="Layout"             //日志头显示的文本内容
          footer="Layout"             //日志尾显示的文本内容
          encoding="Encoding"        //文件编码格式
          lineEnding="Enum"          //行结束模式
          archiveAboveSize="Long"            //存档上限值
          maxArchiveFiles="Integer"         //保存的最大存档文件数,默认9
          archiveFileName="Layout"          //存档文件名称。允许使用Layout
          archiveNumbering="Enum"           //存档文件的编号方式
          archiveEvery="Enum"                //是否在每个设定时间刻自动存档日志文件
          replaceFileContentsOnEachWrite="Boolean"  //是否覆盖每次写入的日志内容,默认false
          fileAttributes="Enum"                 //文件属性(只支持Windows)
          fileName="Layout"    //写入日志的文件名称 支持Layout
          deleteOldFileOnStartup="Boolean"   //启动时,是否删除旧的日志文件 。默认为false
          enableFileDelete="Boolean"    //否允许删除日志文件。默认为true
          createDirs="Boolean"           //是否允许自动创建(不存在的)目录。默认为true。
          concurrentWrites="Boolean"  //是否允许使用通过多个进程的方式,将日志信息并行写入文件中。,默认为true
          openFileCacheTimeout="Integer"  //文件保持打开状态的最大时间秒数
          openFileCacheSize="Integer"   //保持打开状态的文件数量
          networkWrites="Boolean"  //是否通过多线程由不同的网络主机并行向文件中写入日志默认false
          concurrentWriteAttemptDelay="Integer"
          concurrentWriteAttempts="Integer"
          bufferSize="Integer"  //日志文件缓存区大小(字节) 默认值为32768(32KB)
          autoFlush="Boolean"   //在每次日志信息后,是否自动刷新文件缓存区 默认true
          keepFileOpen="Boolean" //是否保持日志文件处于打开状态,以代替其在每次日志写事件发生时频繁打开和关闭默认值为false。
备注:设置此属性为true,有助于提高性能。
/>
</targets>

具体参数说明:

layout – 日志呈现的文本内容。默认为:

${longdate}|${level:uppercase=true}|${logger}|${message}

lineEnding – 行结束模式。

可选值:

  •   CR – 在每尾部插入回车符号(ASCII 13)。
  •   CRLF – 在每行尾部插入回车和换行符号(ASCII 13 & ASCII 10)。
  •   Default – 在每行尾部插入平台相关的行结束符号(默认)。
  •   LF - 在每行尾部插入换行符号(ASCII 10)。
  •   None – 不插入任何行结束符号。

archiveAboveSize – 存档上限值。当日志文件大于此值是,将自动存档。其类型为Long。

注意:在多进程并发记录日志的情况下,启用该选项可能会大幅降低日志记录速度。在单进程时,为了达到最佳性能,可以考虑设置ConcurrentWrites为false。

archiveEvery – 是否在每个设定时间刻自动存档日志文件。

可选值:

  • Day – 每日存档。
  • Hour – 每小时存档。
  • Minute – 每分钟存档。
  • Month – 每月存档。
  • None – 不按时间固定存档。
  • Year – 每年存档。

备注:作为写日志的一部分,文件移动到存档位置的操作发生的时间变换时刻。例如,当前时间从10点变至11点,则当在写第11点或11点之后的第一个写操作时,触发日志文件归  档。

注意:在多进程并发记录日志的情况下,启用该选项可能会大幅降低日志记录速度。在单进程时,为了达到最佳性能,可以考虑设置ConcurrentWrites为false。

filename – 写入日志的文件名称。支持Layout。

备注:文件名字符串中可能包含布局呈现器中的实例变量。这样可以通过配置单个目标节点,而将日志写入多个文件中。

以下fileName属性值将使得NLog在应用程序启动目录下,根据日志级别不同,将日志信息写到不同的文件中。

${basedir}/${level}.log

因此,所有的Debug级别日志写入到Debug.log文件中,所有的Info级别日志写入到Info.log文件中,其它以此类推。同时,也可以结合其它布局呈现器实例,组成所要的日志文件名称。

 deleteOldFileOnStartUp – 启动时,是否删除旧的日志文件。其取值类型为Boolean,默认为false。

备注:此选项,仅在“fileName”参数为单个文件时有效。

性能优化选项

concurrentWirtes – 是否允许使用通过多个进程的方式,将日志信息并行写入文件中。其取值类型为Boolean,默认为true。

备注:这使得多进程记录日志成为可能。NLog使用一种特别的技术使用文件保持打开状态以备写入。

openFileCacheTimeout – 文件保持打开状态的最大时间秒数。如果这个数字为负数,则在一定不活动时间后,文件不会自动关闭。其取值类型为Integer,默认值为-1。(即默 认状态下文件始终处于打开状态以备写入。)

openFileCacheSize – 保持打开状态的文件数量。当通过设置单个文件类型目标,且结果写入多个不同文件(如根据日志等级或日志对象名称)时,则可将此属性设置为一个较 高的值以改善性能。其取值类型为Integer,默认值为5。

备注:这些文件是在最近最少使用算法基础管理的,此算法在缓存空间不足时将最长时间内没有使用的文件Flush。一般来说,不应当把此参数设置过大,最好不要超过10-15,这是因同时保持多个文件处于打开状态,对系统资源来说是一个很大的消耗。

networkWrites – 是否通过多线程由不同的网络主机并行向文件中写入日志。其取值类型为Boolean,默认值为false。

备注:通过此此种方式,可以有效阻止文件长期保存为打开状态。

concurrentWriteAttemptDelay – 在再次尝试将日志写入文件之前延迟的毫秒数。其取值类型为Integer,默认值为1。

备注:实际的延迟时间,是一个介于0到指定参数值之间的随机整数,且在每次尝试失败之后,都会将此参数加倍。假使此参数值为10,则第一次重试写入 的延迟时间(毫秒数)在 0-10之间的一个随机数,第二次重试时为0-20之间的一个随机数,第三次重试时为0-40之间的一个随机数,第四次重试时为0-80之间的一个随机数 等等,以此类推。

concurrentWriteAttempts – 在NLog丢弃日志信息之前的追加(尝试重写)写次数。其取值类型为Integer,默认值为10。

bufferSize – 日志文件缓存区大小(单位:字节)。其取值类型为Integer,默认值为32768(32KB)。

autoFlush – 在每次日志信息后,是否自动刷新文件缓存区。其取值类型为Boolean,默认值为true。

keepFileOpen – 是否保持日志文件处于打开状态,以代替其在每次日志写事件发生时频繁打开和关闭。其取值类型为Boolean,默认值为false。

备注:设置此属性为true,有助于提高性能。

时间: 2025-01-04 23:24:26

NLog输出目标及类型的相关文章

转:NLog之:文件类型目标(File target)

转:http://www.cnblogs.com/RitchieChen/archive/2012/07/16/2594308.html 英文原文[http://nlog-project.org/wiki/File_target] 用途 将日志信息写到一个或多个文件中. 支持.NET Framework1.0; 1.1; 2.0; 3.5; 4.0 SilverLight4.0 .NET Compact Framework1.0; 2.0; 3.5; Mono.NET. 配置语法 <target

python基础(文件输入/输出 内建类型 字典操作使用方法)

本文主要介绍了python基础入门,包括文件输入/输出.内建类型.字典操作等使用方法 一.变量和表达式 代码如下: >>> 1 + 1 2>>> print 'hello world' hello world>>> x = 1               >>> y = 2>>> x + y3 Python是强类型语言,无法根据上下文自动解析转换成合适的类型. Python是一种动态语言,在程序运行过程中,同一个变量

C#使用NLOG System.TypeInitializationException,类型初始值设定项引发异常

C#如何使用NLOG,网上有很多介绍,本次使用时遇到一个问题,使用NLOG写日志时,出现初始化异常,基本异常信息如下: System.AggregateException: 发生一个或多个错误. ---> System.TypeInitializationException: “xxx”的类型初始值设定项引发异常.   ---> System.Configuration.ConfigurationErrorsException: 配置系统未能初始化 ---> System.Configu

Spring Boot显示获取连接及多结果集输出、表值类型

Spring Boot框架比较方便地进行数据源的管理,结合MyBatis常规的查询.存储过程都可以简单地配置实现.很多业务场景,需要进行更为复杂的处理,因此需要将框架内的连接池里的连接取出使用,使用完了再放回去. @Controller public class …… { public Logger LOGGER = LoggerFactory.getLogger(this.getClass()); private DataSource dataSource; @Autowired public

YTUOJ-学生成绩输入和输出(用户自定义类型)

题目描述 编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据,每个学生的数据包括num(学号).name(姓名).score[3](3门课的成绩).编写一个函数input,用来输入5个学生的数据. 输入 5个学生的学号,姓名,3门课的成绩 输出 5个学生的学号,姓名,3门课的成绩 样例输入 1001 zhangsan 100 90 86 1002 lisi 90 20 80 1003 wangwu 90 90 89 1004 yanping 100 100 100 1005

NLog学习

一.什么是NLog? NLog((http://www.nlog-project.org)是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码. NLog允许我们自定义从跟踪消息的来源(source)到记录跟踪信息的目标(target)的规则(rules).记录跟踪信息的目标(target)可以为如下几种形式: 文件 文本控制台 Email 数据库 网络中的其它计算机(通过TCP或UDP) 基于MSMQ的消息队列 Windows系统日志 其他形式,请参考h

NLog学习笔记二:深入学习

配置文件 NLog所有的配置信息都可以写到一个单独的xml文件中,也可以在程序代码中进行配置. 配置文件位置 启动的时候,NLog会试图查找配置文件完成自动配置,查找的文件依次如下(找到配置信息则结束查询): 应用程序的标准配置文件(通常为applicationname.exe.config) 应用程序所在目录中的applicationname.exe.nlog文件 应用程序所在目录中的NLog.config文件 NLog.dll所在目录中的NLog.dll.nlog文件 环境变量NLOG_GL

ASP.NET Core 2.1 : 十二.内置日志、使用Nlog将日志输出到文件

应用离不开日志,虽然现在使用VS有强大的调试功能,开发过程中不复杂的情况懒得输出日志了(想起print和echo的有木有),但在一些复杂的过程中以及应用日常运行中的日志还是非常有用. ASP.NET Core提供了内置的日志,但没弄明白这么把它输出到文件, 只能在VS的输出中查看, 谁知道怎么弄告诉我一下.(ASP.NET Core 系列目录) 本例 GitHub 一.内置日志的使用 上一篇:如何在后台运行一个任务  中使用到了内置的日志,直接在构造中注入一下,然后直接使用即可, 非常方便 pu

编写高质量代码改善C#程序的157个建议——建议13: 为类型输出格式化字符串

建议13: 为类型输出格式化字符串 有两种方法可以为类型提供格式化的字符串输出.一种是意识到类型会产生格式化字符串输出,于是让类型继承接口IFormattable.这对类型来 说,是一种主动实现的方式,要求开发者可以预见类型在格式化方面的要求.更多的时候,类型的使用者需为类型自定义格式化器,这就是第二种方法,也是最灵活 多变的方法,可以根据需求的变化为类型提供多个格式化器.下面就来详细介绍这两种方法. 最简单的字符串输出是为类型重写ToString方法,如果没有为类型重写该方法,默认会调用Obj