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

小老鼠
发布: 2025-11-04 15:14:02
原创
516人浏览过
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<T> 并记录日志:

public class HomeController
{
    private readonly ILogger<HomeController> _logger;

    public HomeController(ILogger<HomeController> 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大模型系列

百灵大模型 313
查看详情 百灵大模型
Install-Package NLog
Install-Package NLog.Web.AspNetCore
登录后复制

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"
      autoReload="true"
      internalLogLevel="Info"
      internalLogFile="logs/internal-nlog.txt">

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

  <rules>
    <logger name="*" minlevel="Trace" writeTo="fileTarget,consoleTarget" />
  </rules>
</nlog>
登录后复制

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 是可靠选择。

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

以上就是C# 怎么使用 Serilog 或 NLog 记录日志_C# 日志记录框架使用指南的详细内容,更多请关注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号