新闻中心

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

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

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

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

Serilog 的基本使用

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

1. 安装 NuGet 包:

  • 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 配置文件:

Narration Box Narration Box

Narration Box是一种语音生成服务,用户可以创建画外音、旁白、有声读物、音频页面、播客等

Narration Box 68 查看详情 Narration Box

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


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">


layout="${longdate} ${level:uppercase=true} ${message} ${exception:format=tostring}" />
layout="${colored-literal:text=${level:uppercase=true}:color=DarkRed} ${message}" />






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配置日志框架的详细内容,更多请关注其它相关文章!


# 是一种  # 电器营销方案网站优化  # 永州视频营销推广公司  # 推广沙田柚营销方案策划  # 益阳个性化网站建设  # 门窗seo  # 面试seo的自我评价  # 十堰网站关键词优化代码  # 垫江县网站推广团队电话  # Facebook SEO推广 课程  # 河北网站推广欢迎来电  # 推荐使用  # 两种  # 都能  # app  # 很好  # 的是  # 如何使用  # 链式  # 结构化  # red  # .net  # c#开发  # c#  # 配置文件  # 路由  # 工具 


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


相关推荐: 如何在 Excel Online 和 Google 表格中更改日期格式  css链接悬停下划线样式如何自定义_使用::after结合content和transition  J*aScript对象创建方式_J*aScript设计模式应用  J*aScript设计模式实践_j*ascript代码优化  曝R星经典之作开发图 设计简陋但信息密集!  Shopware订单对象中获取产品自定义字段的正确方法  PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符  小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】  如何使用Node.js csv 包按条件移除含空字段的CSV记录  如何使用 Excel 发布器与 Power BI 分享 Excel 洞察  在Go开发中优雅管理ListenAndServe进程:GoSublime集成方案  2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享  漫蛙官网正版漫画入口 漫蛙2官方网页登录地址  知乎APP怎么管理已购盐选内容_知乎APP盐选内容购买记录与查看方法  腾讯视频怎么举报不良内容_腾讯视频内容举报流程与违规信息处理方法  邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策  Lar*el如何生成PDF或Excel文件_Lar*el文档导出工具与使用教程  圆通快递查询实时追踪 圆通物流包裹状态快速查看  c++中的std::basic_string的SSO优化_c++短字符串优化深度解析  知音漫客官网漫画下载_知音漫客网页版阅读记录  Win11怎么查看电脑配置_Win11硬件配置检测工具使用  TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  CSS实现侧边栏导航项全宽圆角悬停背景效果  Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】  Steam官网入口直达 Steam注册及登录步骤  漫蛙漫画网页端入口 漫蛙2官方正版漫画站点  谷歌浏览器一键优化方案_谷歌浏览器直达主页极速不卡版  海棠账号登录入口_登录海棠账户同步阅读记录  抖音商城签到领现金是真的吗_抖音商城签到奖励与提现说明  sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置  百度浏览器字体显示异常偏小_百度浏览器字体渲染修复方案  如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略  在Blazor WebAssembly应用中动态注入客户端特定指标代码的策略  css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容  《燕云十六声》两周内达九百万玩家!位居畅销榜第五  漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接  在Typer应用中优雅地处理和重组任意命令行参数  AO3中文官网链接_AO3网页版稳定镜像站  Fabric模组开发:自定义物品与物品组的现代管理方法  想当下一个《2077》?《心之眼》Steam评价升至"多半好评"  PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果  Go语言中Map存储的结构体如何调用指针方法:深入解析与实践  解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南  快手官方唯一登录入口 谨防山寨钓鱼网站  AO3最新可访问网址 Archive of Our Own官方在线入口  Yandex免登录网页版地址 Yandex搜索引擎官方访问入口  包子漫画官方网站在线链接-包子漫画在线阅读平台主页地址  抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩  NRF24L01数据传输深度解析:解决大载荷接收异常与分包策略 

搜索