C#中使用Nlog日志工具
安装
通过Nuget安装,搜索Nlog, 然后安装NLog和NLog.Config(相当于一个配置模板)。
当然也可以自己在项目根目录下创建一个配置文件NLog.config,注意在NLog.config的属性中设置 Copy to Output Directory: Copy always
基本目录结构
<?xml version="1.0" ?>
<nlog>
<targets>
<target></target>
<target></target>
</targets>
<rules>
<logger></logger>
<logger></logger>
</rules>
</nlog>
targets下面配置日志相关参数,比如日志存放的地址,名称,格式,大小等
rules下面配置目标输出规则 ,就是targets下面配置的在rules中使用。
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">
<!-- optional, add some variables
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<variable name="myvar" value="myvalue"/>
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<targets>
<!--
add your targets here
See https://github.com/nlog/NLog/wiki/Targets for possible targets.
See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
-->
<!--
Write events to a file with the date in the filename.
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
-->
<target name="info" xsi:type="File" fileName="${basedir}/logs/info/log_${shortdate}.log" archiveAboveSize="500000" encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/>
<target name="debug" xsi:type="File" fileName="${basedir}/logs/debug/log_${shortdate}.log" archiveAboveSize="500000" encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/>
<target name="error" xsi:type="File" fileName="${basedir}/logs/error/log_${shortdate}.log" archiveAboveSize="500000" encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/>
<target name="trace" xsi:type="File" fileName="${basedir}/logs/trace/log_${shortdate}.log" archiveAboveSize="500000" encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/>
<target name="warn" xsi:type="File" fileName="${basedir}/logs/warn/log_${shortdate}.log" archiveAboveSize="500000" encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/>
<target name="console" xsi:type="ColoredConsole" encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/>
</targets>
<rules>
<!-- add your logging rules here -->
<logger name="*" level="Debug" writeTo="debug" />
<logger name="*" level="Info" writeTo="info"/>
<logger name="*" level="Warn" writeTo="warn"/>
<logger name="*" level="Trace" writeTo="trace"/>
<logger name="*" level="Error" writeTo="error"/>
<!--添加必要的规则-->
<logger name="*" minlevel="Trace" writeTo="console"/>
<!--
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
<logger name="*" minlevel="Debug" writeTo="f" />
-->
</rules>
</nlog>
添上argets ,和rules中的内容,模板用的Nuget下载的NLog.config。
简单使用
NLog.Logger logger = Nlog.LogManager.GetCurrentClassLogger();
logger.Debug("********");
logger.Info("********");
logger.Warn("********");
logger.Error("********");
##配置信息
###基本配置·
NLog 根节点 下的配置
-
autoReload:配置修改是否自动加载。 -
throwExceptions:日志出现异常时是否需要抛出异常,若配置为true日志记录异常时由于没有捕获异常,会导致程序挂掉。 -
internalLogLevel:表示nlog日志的执行日志记录等级。 -
internalLogFile:表示nlog日志的执行日志记录的位置。通过./XXXX的方式可以配置到程序的相对目录。日志等级
Level FirstCharacter Ordinal Trace T 0 Debug D 1 Info I 2 Warn W 3 Error E 4 Fatal F 5 Off O 6
target (目标)
<targets async="true"> <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${message}" /></targets>
通过将async设置为true可以异步保存日志,从而防止日志影响业务性能。
####xsi:type
输入类型,支持以下类型。
-
ColoredConsole : 使用可自定义的颜色将日志消息写入控制台。
-
Console - 将日志消息写入控制台。
-
Debug - 模拟目标-用于测试。
-
File - 将日志消息写入一个或多个文件。
-
Mail - 使用 smtp 协议或拾取文件夹通过电子邮件发送日志邮件。
-
Null - 丢弃日志消息。主要用于调试和基准测试
具体参数说明
<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>
rules(规则)
<rules> <logger name="*" minlevel="Debug" writeTo="f" /> </rules>
在Nlog节点下添加rules节点,rules节点下可以配置多个logger节点,每个logger节点即为一条约束。
name:logger名称,若为*则表示适用于所有日志,若我们某个target专门用于logdemo.test类的日志输出,则那么可以设置为logdemo.test.*,表示当前约束只允许命名空间为logdemo.test开头的日志输出。minlevel:表示当前约束的最小等级,只有等于或大于该值的日志等级才会被记录。writeTo:表示当前规则约束哪个target。
参考文章
https://blog.csdn.net/jun502525164/article/details/40352253
本文介绍如何在C#项目中使用NLog进行日志记录,包括配置文件详解、日志等级设定及常见目标类型配置。通过示例展示如何实现不同级别的日志输出,并提供了异步日志记录等高级特性。
1249

被折叠的 条评论
为什么被折叠?



