新闻中心

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

2025-11-04
浏览次数:
返回列表
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></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 包

VALL-E VALL-E

VALL-E是一种用于文本到语音生成 (TTS) 的语言建模方法

VALL-E 134 查看详情 VALL-E
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# 日志记录框架使用指南的详细内容,更多请关注其它相关文章!


# 程序开发  # 流量营销推广方法  # 莱山区网站推广公司  # 什么叫网站优化什  # 微信群推广营销方法  # 腾讯网站广告推广  # 如何做网红网站推广呢视频  # 沧州网站建设方式  # 营销团队文化微信推广  # 胡歌为seo代言  # 海沧百度seo推广  # 是一种  # 如果你  # 是一个  # 日志记录  # 链式  # 仅是  # 数据结构  # 更适合  # 结构化  # red  # .net  # 应用开发  # 配置文件  # 路由  # 工具  # app  # c# 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Linux如何排查内存不足OOME问题_LinuxOOM分析教程  windows10怎么查看硬盘序列号_windows10硬盘id查询命令  深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现  J*aScript DOM操作:高效清空列表元素的策略与实践  微信网页版官方入口教程 微信网页版网页版快速登录步骤  LINUX怎么设置定时任务_LINUX crontab配置教程  知音漫客正版漫画平台_知音漫客官网账号登录  Yandex浏览器官方网页版入口 Yandex浏览器最新版官网  J*aScript中如何高效提取对象指定属性  LINUX的perf命令入门_LINUX官方性能分析工具的使用与解读  2025俄罗斯Yandex最新入口 官方网站地址及浏览器下载指南  Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法  Log4j Console Appender性能瓶颈与高并发优化策略  React Router v6 教程:构建认证保护的私有路由与重定向策略  Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  HTML元素状态管理:根据DIV内容动态启用/禁用按钮  谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程  汽水音乐车机版8.9下载 汽水音乐车机版8.9版本安装入口  Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址  如何创建没有密码的Windows本地账户_跳过微软账户登录的技巧【教程】  word中如何让数字纵向排列_Word数字纵向排列方法  深入理解J*a链表中的IPosition接口与使用  UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS  Python模块化编程:有效管理依赖与避免循环引用  J*aScript教程:根据元素文本内容动态设置背景色  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  火锅吃太多会怎样 火锅吃太多会上火吗  知音漫客官网漫画下载_知音漫客网页版阅读记录  ExcelARRAYTOTEXT函数怎么自定义分隔符输出数组文本_ARRAYTOTEXT实现动态生成SQL语句  红果短剧网页版官网入口 官方最新网址发布  必由学官方平台入口 必由学在线课堂登录地址  在Qt QML中通过Python字典动态更新TextEdit内容的教程  Win10如何开启蓝牙功能_Windows10找不到蓝牙开关解决方法  React中useState与局部变量:理解组件状态管理与渲染机制  蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址  win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】  html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】  Excel Power Pivot如何处理XML数据源 构建高级数据模型  Typer应用中灵活处理命令行参数的令牌化与解析  C#中解析不规范的HTML为XML 常见的坑与解决办法  魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】  大麦的“候补”是什么意思 大麦候补购票规则【详解】  Lar*el 递归关系中排除指定分支的教程  Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换  AO3官方在线访问地址 Archive of Our Own最新镜像合集  qq游戏免费畅玩入口_qq游戏电脑版快速启动  解决Bootstrap卡片顶部边距导致背景图下移的问题  将HTML动态表格多行数据保存到Google Sheet的教程 

搜索