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


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 包

ViiTor AI ViiTor AI

一个强大的多语言AI语音合成和视频转译平台

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


# c#  # app  # 日志记录  # 沈阳抖音seo优化案例  # 衢州营销推广加盟电话地址  # 阳泉seo优化选择  # 深圳动画营销推广报价  # 中山短视频seo技巧  # 免费发布推广的网站推荐  # seo怎么设置栏目标题  # 郴州柳州网站推广  # 浙江关键词排名优化系统  # 搜狗抖音seo分享  # 适用于  # 两种  # 已有  # 就能  # 如果你  # 是一个  # 如何处理  # 链式  # 结构化  # red  # .net  # 应用开发  # 配置文件  # 路由  # 工具 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: win11自带录屏文件保存在哪里 Win11 Game Bar录制视频默认路径【分享】  芒果TV官网登录入口 芒果TV官方网站登录入口  yandex网页版直接登录 yandex官方入口平台访问方法  Win10运行窗口在哪里打开 Win10调出运行命令框快捷键【技巧】  抖音如何进行蓝V认证 抖音企业号申请所需资料与流程  Pandas中基于动态偏移量实现DataFrame列值位移的策略  研招网官方网站招生平台入口_中国研究生招生信息网官网登录  Three.js中动态更换3D模型纹理的教程  《画加》约稿流程  《杖剑传说》食谱大全  Win10如何查看已安装的更新补丁 Win10卸载指定更新教程【教程】  Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置  Selenium自动化:利用键盘模拟解决复杂日期输入框输入问题  《猎聘》筛选猎头岗位方法  12306APP选座怎么选充电位置_12306APP带充电插座座位选择方法与技巧  GBA模拟器手柄按键设置  如何修改Windows截图的默认保存位置_告别C盘让桌面更整洁【教程】  构建可配置的J*aScript加权点击计数器与共享总计功能  C++二维数组动态分配方法_C++指针与数组内存布局  mail.qq.com登录入口 QQ邮箱网页版直达  《下一站江湖2》武器获取方法  win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】  泰拉瑞亚网页版在线登录入口 泰拉瑞亚官方正版入口  苹果手机缓存怎么清除_苹果手机缓存如何清除iphone各版本操作步骤  优化 React onClick 事件处理:函数引用与箭头函数的对比  风神瞳获取全攻略  冬季去哪个城市旅游更有可能观测到极光  如何在CSS中使用伪类选择器_hover实现悬停效果  视频转蓝光m2ts格式  WPS长文档分栏排版不乱方法_WPS分栏+分节符报纸排版教程  Keras中Convolution2D层及其核心辅助层详解  如何编写一个符合 composer 规范的 post-install-cmd 脚本?  使用Python和NLTK从文本中高效提取名词的实用教程  向往的生活小游戏启动处_向往的生活小游戏立即启动  电脑开不了机怎么办 电脑无法开机的解决方法  基于键值条件高效映射 Pandas DataFrame 多列数据  Win11怎么录屏_Windows 11自带Xbox Game Bar录制视频  macosmonterey系统外接显示器驱动怎么安装_macosmonterey外接显示器驱动与分辨率调整  在VS Code中利用AI辅助进行代码迁移  海棠阅读网页版_进入海棠网页版在线阅读中心  画质怪兽120帧安卓和平精英免费版  偃武诸葛亮阵容搭配推荐  J*aScript与CSS动画:实现平滑顺序淡入淡出效果并解决显示冲突  《东方财富》条件单关闭方法  告别繁琐SEO!如何使用SyliusSitemap插件自动化生成网站地图,提升搜索引擎排名  Flexbox布局:实现粘性导航与底部页脚的完美结合  C#中的Record类型有什么优势?C# 9新特性Record与Class的用法区别  Go语言反射机制:如何访问被嵌入结构体遮蔽的方法  QQ邮箱手机版网页版 QQ邮箱登录入口地址  J*aScript字符串_Unicode处理 

 2025-11-04

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.