C#如何进行日志记录 C#使用Serilog或NLog配置日志框架

小老鼠
发布: 2025-12-01 18:22:02
原创
187人浏览过
Serilog和NLog是C#中常用日志框架,Serilog支持结构化日志和多种输出,适合现代日志系统集成;NLog通过XML配置灵活管理日志规则,性能优秀。两者均需正确配置输出目标、滚动策略并防止敏感信息泄露,选择取决于团队习惯与运维需求。

c#如何进行日志记录 c#使用serilog或nlog配置日志框架

在C#开发中,良好的日志记录是排查问题、监控系统运行状态的重要手段。Serilog 和 NLog 是两个广泛使用的第三方日志框架,它们功能强大、配置灵活,支持多种输出目标(如控制台、文件、数据库、远程服务等)。下面介绍如何在 C# 项目中使用 Serilog 或 NLog 进行日志记录。

Serilog 的基本使用

Serilog 以结构化日志著称,特别适合与 Elasticsearch、Seq、Application Insights 等现代日志分析工具集成。

1. 安装 NuGet 包:

博思AIPPT
博思AIPPT

博思AIPPT来了,海量PPT模板任选,零基础也能快速用AI制作PPT。

博思AIPPT 117
查看详情 博思AIPPT
  • Serilog
  • Serilog.Sinks.Console
  • Serilog.Sinks.File

可以通过 NuGet 包管理器或命令行安装:

dotnet add package Serilog
dotnet add package Serilog.Sinks.Console
dotnet add package Serilog.Sinks.File

2. 配置并初始化 Logger:

Program.cs 或应用启动处配置:

using Serilog;

Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();

// 使用日志
Log.Information("应用程序启动");
Log.Warning("这是一个警告");
Log.Error("发生错误");

// 关闭并刷新日志(程序退出前)
Log.CloseAndFlush();

3. 在 ASP.NET Core 中集成:

替换默认日志提供者:

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog((context, services, configuration) => configuration
.WriteTo.Console()
.WriteTo.File("logs/app.log", rollingInterval: RollingInterval.Day))
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
});

NLog 的基本使用

NLog 是另一个成熟稳定的日志框架,配置主要通过 XML 文件完成,灵活性高,性能优秀。

1. 安装 NuGet 包:

  • NLog
  • NLog.Extensions.Logging

2. 添加 nlog.config 配置文件

在项目根目录添加 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">

<targets>
<target xsi:type="File" name="fileTarget" fileName="logs/${shortdate}.log"
layout="${longdate} ${level:uppercase=true} ${message} ${exception:format=tostring}" />
<target xsi:type="Console" name="consoleTarget"
layout="${colored-literal:text=${level:uppercase=true}:color=DarkRed} ${message}" />
</targets>

<rules>
<logger name="*" minlevel="Trace" writeTo="fileTarget,consoleTarget" />
</rules>

</nlog>

3. 在 ASP.NET Core 中启用 NLog:

修改 Program.cs

using NLog;
using NLog.Web;

var builder = WebApplication.CreateBuilder(args);

// 添加 NLog
builder.Host.UseNLog();

var app = builder.Build();

// 正常配置中间件...

4. 在代码中使用:

private readonly ILogger _logger;

public HomeController(ILogger logger)
{
_logger = logger;
}

_logger.LogInformation("用户访问首页");
_logger.LogError(ex, "处理请求时出错");

选择建议

如果追求结构化日志和与现代日志平台的集成(如 Seq、Elasticsearch),推荐使用 Serilog。它的 API 清晰,链式配置直观。

如果偏好基于配置文件的管理方式,或者需要更细粒度的路由规则、条件写入等高级功能,NLog 更加合适,且对性能影响极小。

基本上就这些,两种框架都能很好地满足 C# 项目的日志需求,选择哪一个更多取决于团队习惯和运维体系。不复杂但容易忽略的是正确关闭日志、设置滚动策略和避免敏感信息泄露。

以上就是C#如何进行日志记录 C#使用Serilog或NLog配置日志框架的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号