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

在 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(&qu
ot;/", () => "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是一种用于文本到语音生成 (TTS) 的语言建模方法
134
查看详情
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的教程


2025-11-04
浏览次数:次
返回列表
ot;/", () => "Hello World!");
app.Run();