NLog
配置文件:https://raw.githubusercontent.com/NLog/NLog/dev/src/NuGet/NLog.Config/content/NLog.config
framework环境下
1、安装
2、将配置文件下载下来后复制到程序根目录中,并设置属性
3、补充配置文件内容
<?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> <target name="logfile" xsi:type="File" fileName="${basedir}/file.txt" /> <target name="logconsole" xsi:type="Console" /> </targets> <rules> <logger name="*" minlevel="Info" writeTo="logconsole" /> <logger name="*" minlevel="Debug" writeTo="logfile" /> </rules> </nlog>
4、控制台的主方法
class Program { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); public static void Main() { try { Logger.Info("Hello world"); Logger.Debug("Hello world22"); Console.ReadKey(); } catch (Exception ex) { Logger.Error(ex, "Goodbye cruel world"); } } }
5、运行后在Debug文件夹下就会产生日志文件
注意事项:
- 配置文件可下载后复制到程序中,它会自动读取;也可直接代码配置或者app.config文件中配置,详情见官网文档。
-
NLog支持以下日志级别:从低到高(注:若配置文件设置了最低级别(minlevel),它将匹配比其更高的所有级别日志)
Trace
-非常详细的日志,其中可能包含大量信息,例如协议有效负载。通常仅在开发期间启用此日志级别Debug
-调试信息,其详细程度少于跟踪信息,通常在生产环境中未启用。Info
-信息消息,通常在生产环境中启用Warn
-警告消息,通常针对非关键性问题,可以恢复或为临时故障Error
-错误消息-大多数情况下,这些是Exceptions
Fatal
-非常严重的错误!
6、配置项<targets async=” Boolean”> //是否 <target
xsi:type="File" //输出类型 name="String" //节点名称 layout="Layout" //日志输入格式 header="Layout" //日志头显示的文本内容 footer="Layout" //日志尾显示的文本内容 encoding="Encoding" //文件编码格式 lineEnding="Enum" //行结束模式 archiveAboveSize="Long" //存档上限值,1024=1Kb(注意:在多进程并发记录日志的情况下,启用该选项可能会大幅降低日志记录速度。在单进程时,为了达到最佳性能,可以考虑设置ConcurrentWrites为false。)
maxArchiveFiles="Integer" //保存的最大存档文件数,默认9 archiveFileName="Layout" //存档文件名称。允许使用Layout archiveNumbering="Enum" //存档文件的编号方式 archiveEvery="Enum" //是否在每个设定时间刻自动存档日志文件(Day – 每日存档。Hour – 每小时存档。Minute – 每分钟存档。Month – 每月存档。None – 不按时间固定存档。Year – 每年存档。)
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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了