September 3, 2023
By: Kevin
dotnet项目中NLog的配置和使用
NLog是一个流行的、可扩展的、跨平台的日志记录库,用于在应用程序中实现灵活且高性能的日志记录。
功能特性:
- 多种日志目标(Targets):提供多种日志输出目标,如控制台、文件、数据库、网络等。
- 灵活的日志级别:支持多种日志级别,如 Trace、Debug、Info、Warn、Error、Fatal。
- 丰富的布局渲染器:可以自定义日志消息的格式。
- 异步日志记录:提高应用程序性能。
- 可扩展性:可以添加自定义的目标、布局渲染器、过滤器等。
- 跨平台支持:支持多个平台,包括 Windows、Linux、macOS。
使用方法
- 安装 NLog 包:通过 NuGet 包管理器或其他方式添加。
- 配置 NLog:创建一个 NLog 配置文件,定义日志目标、日志级别等。
- 使用 NLog:在代码中获取 Logger 实例,进行日志记录。
- 运行应用:日志将根据配置写入到指定的目标。
代码例子
#r "nuget: NLog, 5.2.0"
using NLog;
var config = new NLog.Config.LoggingConfiguration();
// 日志格式
var layout = "${longdate} tid:${threadid} ${callsite} ${message}";
// 控制台目标
var logconsole = new NLog.Targets.ConsoleTarget("logconsole")
{
Layout = layout
};
// 文件目标
var logfile = new NLog.Targets.FileTarget("logfile")
{
FileName = "${date:format=yyyy-MM-dd}.log", // 使用日期作为文件名
Layout = layout,
ArchiveOldFileOnStartup = true, // 启动时归档旧文件
ArchiveFileName = "${date:format=yyyy-MM-dd}.{#}.log", // 归档文件名
ArchiveNumbering = ArchiveNumberingMode.Date, // 使用日期作为归档编号
ArchiveEvery = FileArchivePeriod.Day, // 每天进行归档
MaxArchiveFiles = 7 // 保留最近7天的归档文件
};
// 添加规则
config.AddRule(LogLevel.Info, LogLevel.Fatal, logfile);
config.AddRule(LogLevel.Info, LogLevel.Fatal, logconsole);
// 应用配置
LogManager.Configuration = config;
// 创建logger
var logger = LogManager.GetCurrentClassLogger();
// 写日志
logger.Info("Hello, NLog!");
// 刷新并关闭
LogManager.Shutdown();
打印的结果, 注意日期和线程ID
2023-09-06 13:14:48.3303 tid:1 Submission#0.Initialize Hello, NLog!
| |
v v
日期 线程ID
这样配置后,日志会同时输出到控制台和文件中, 日志文件也有控制
将每天生成一个新文件,并且按照日期进行命名。
同时,通过 MaxArchiveFiles 属性设置了保畈最近7天的日志文件,过期的日志文件将会被自动删除。这样可以有效地管理日志文件,避免占用过多的磁盘空间。