讲师中心 微信公众号
AI工具推荐 视频效率加速

C# 如何使用log4net或Serilog - 配置强大的日志记录框架

夏墨吖_5341

夏墨吖_5341

发布时间:2025-12-05 07:33:23

|

936人浏览过

|

来源于php中文网

原创

推荐新项目优先选Serilog,因其结构化日志支持好、配置简洁;老项目可继续用log4net。1. Serilog支持命名参数记录,便于查询分析,配置通过代码或JSON完成,集成ASP.NET Core只需UseSerilog()。2. log4net依赖XML配置,扩展性较弱,需手动桥接ILoggerFactory。3. 两者均需调用关闭方法确保日志落盘。

c# 如何使用log4net或serilog - 配置强大的日志记录框架

在 C# 项目中,log4net 和 Serilog 都是成熟、灵活的日志框架,但 Serilog 更现代、配置更简洁、结构化日志支持更好;log4net 功能稳定但 XML 配置繁琐、扩展性略弱。推荐新项目优先选 Serilog,老项目维护可继续用 log4net。

Serilog:轻量配置 + 结构化日志

Serilog 的核心优势是“结构化日志”——日志消息可带命名参数,便于后续查询和分析(比如写入 Elasticsearch 或 Seq)。

  • 安装 NuGet 包:Serilog、Serilog.Sinks.Console(控制台)、Serilog.Sinks.File(文件)、Serilog.AspNetCore(ASP.NET Core 集成)
  • 在 Program.cs(.NET 6+)中配置:
using Serilog;
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.Console()
    .WriteTo.File("logs/log-.txt", rollingInterval: RollingInterval.Day)
    .CreateLogger();
<p>var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog(); // 启用 Serilog 全局日志

使用时直接注入 ILogger<t></t> 或调用 Log.Information("User {Id} logged in at {Time}", userId, DateTime.Now) —— {Id} 和 {Time} 会作为结构化字段被记录,不只是字符串插值。

log4net:XML 驱动 + 成熟生态

log4net 依赖外部配置文件(如 log4net.config),适合已有 XML 管理习惯或需精细控制追加器(Appender)的老系统。

  • 安装 log4net NuGet 包
  • 添加 log4net.config 到项目,设“复制到输出目录=始终复制”
  • 在 Program.cs 或 Startup.cs 中初始化:
XmlConfigurator.Configure(new FileInfo("log4net.config"));

典型配置片段(输出到文件 + 控制台):

JS X Monitor
JS X Monitor

X.com (Twitter) 账号监控自动化:定时抓取指定账号最新推文,发现新内容即时推送通知。

下载
<log4net>
  <appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="logs/app.log" />
    <appendToFile value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>
  <root>
    <level value="INFO" />
    <appender-ref ref="FileAppender" />
  </root>
</log4net>

代码中使用:private static readonly ILog log = LogManager.GetLogger(typeof(Program));,然后 log.Info("Request processed");

关键差异与选型建议

  • 结构化日志:Serilog 原生支持;log4net 需借助 LogEventInfo.Properties 手动附加,不直观
  • 配置方式:Serilog 支持代码、JSON、环境变量等多种方式;log4net 几乎只靠 XML
  • 异步写入:Serilog 默认支持(Async sink 包);log4net 需自行包装或使用第三方 Appender
  • ASP.NET Core 集成:Serilog 提供 UseSerilog() 一键接管所有内置日志;log4net 需手动桥接 ILoggerFactory

小技巧:快速启用 JSON 日志(Serilog)

若对接 ELK 或 Datadog,只需换一个 Sink:

.WriteTo.File(new JsonFormatter(), "logs/log-.json", rollingInterval: RollingInterval.Day)

每条日志自动转为 JSON 行格式,含时间、级别、消息、属性字段,开箱即用。

基本上就这些。Serilog 上手快、维护省心,log4net 胜在稳定和文档全。不复杂但容易忽略的是:无论选哪个,记得在应用退出前调用 Log.CloseAndFlush()(Serilog)或 LogManager.Shutdown()(log4net),确保缓冲日志落盘。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

超级麦吉

一款通过数字员工协作完成调研、数据分析与文档制作的AI办公平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2195

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3462

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1156

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

3979

2025.09.10

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4764

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

6177

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2522

2024.11.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1818

2023.08.03

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Conan Changelog
Conan Changelog

共0课时 | 0人学习

C++ Core Guidelines
C++ Core Guidelines

共0课时 | 0人学习

C++ Reference
C++ Reference

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn