0

0

C# 怎么使用 Serilog 或 NLog 记录日志_C# 日志记录框架使用指南

小老鼠

小老鼠

发布时间:2025-11-04 15:14:02

|

525人浏览过

|

来源于php中文网

原创

Serilog和NLog是.NET中常用日志框架,Serilog支持结构化日志,配置简洁,适合集成Seq、Elasticsearch;NLog配置灵活,支持复杂规则,适用于企业级应用。两者均通过NuGet安装,配合配置文件或代码初始化,并通过ILogger接口写入日志,可根据项目需求选择其一。

c# 怎么使用 serilog 或 nlog 记录日志_c# 日志记录框架使用指南

在 C# 项目中使用 Serilog 或 NLog 进行日志记录,是现代 .NET 应用开发中的常见实践。它们比内置的 logging 更灵活、功能更强大。下面分别介绍如何在 ASP.NET Core 或普通 .NET 项目中集成和使用 Serilog 和 NLog。

使用 Serilog 记录日志

Serilog 是一个结构化日志库,支持将日志输出到控制台、文件、数据库、Elasticsearch、Seq 等多种目标。

1. 安装 NuGet 包
在项目中安装以下包(以写入文件和控制台为例):

Install-Package Serilog
Install-Package Serilog.Sinks.Console
Install-Package Serilog.Sinks.File

2. 配置 Serilog(在 Program.cs 中)
对于 .NET 6+ 的项目,在 Program.cs 中配置:

using Serilog;

var builder = WebApplication.CreateBuilder(args);

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

// 使用 Serilog 作为日志提供者
builder.Host.UseSerilog();

var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

3. 在代码中使用 ILogger
注入 ILogger 并记录日志:

public class HomeController
{
    private readonly ILogger _logger;

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

    public void Index()
    {
        _logger.LogInformation("用户访问了首页");
        _logger.LogWarning("这是一个警告");
        _logger.LogError("发生了一个错误");
    }
}

4. 结构化日志示例
Serilog 支持结构化日志,可带参数:

_logger.LogInformation("用户 {UserId} 在 {LoginTime} 登录", 123, DateTime.Now);

使用 NLog 记录日志

NLog 是另一个流行的日志框架,配置灵活,支持多种目标和规则。

1. 安装 NuGet 包

甲骨文AI协同平台
甲骨文AI协同平台

专门用于甲骨文研究的革命性平台

下载
Install-Package NLog
Install-Package NLog.Web.AspNetCore

2. 添加 nlog.config 配置文件
在项目根目录添加 nlog.config 文件,并设置“复制到输出目录”为“始终复制”:




  
    
    
  

  
    
  

3. 在 Program.cs 中启用 NLog

using NLog.Web;

var builder = WebApplication.CreateBuilder(args);

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

var app = builder.Build();

app.MapGet("/", () => "Hello NLog!");

app.Run();

4. 使用 ILogger 写日志
与 Serilog 相同,通过依赖注入使用:

_logger.LogInformation("请求处理完成,响应状态:{StatusCode}", 200);

两种框架的对比与选择

  • Serilog:更适合需要结构化日志、集成 Seq、Elasticsearch 等分析工具的场景。API 简洁,链式配置清晰。
  • NLog:配置强大,支持复杂的路由规则、过滤器、条件写入。适合传统企业级应用或需要精细控制日志行为的项目。
  • 两者都支持 .NET Core/.NET 5+,都能与 ASP.NET Core 深度集成。

提示:如果你追求简洁和现代结构化日志,推荐 Serilog;如果已有 NLog 配置经验或需要复杂日志策略,NLog 是可靠选择。

基本上就这些。根据项目需求选择其一,配置好后就能统一管理日志输出了。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1025

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

66

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

452

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

351

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2075

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

347

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

255

2023.09.05

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

3

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MongoDB 教程
MongoDB 教程

共17课时 | 2.2万人学习

mysql8主从复制原理底层详解
mysql8主从复制原理底层详解

共1课时 | 535人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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