0

0

C# 日志记录方法 C#如何实现应用程序日志

幻夢星雲

幻夢星雲

发布时间:2026-02-06 08:39:37

|

202人浏览过

|

来源于php中文网

原创

当前标准做法是使用 ILogger + Microsoft.Extensions.Logging:依赖注入获取泛型 ILogger 实例,避免手动 new;日志级别需合理选用(Debug 仅开发期、Error 必传 Exception);结构化日志用占位符而非字符串插值;文件日志推荐 Serilog 或 NLog,而非手写文件写入。

c# 日志记录方法 c#如何实现应用程序日志

ILogger + Microsoft.Extensions.Logging 是当前标准做法

ASP.NET Core 项目默认内置,.NET 6+ 桌面应用也推荐直接用它,而不是手写文件写入或老式 Trace。核心是依赖注入 + 预置提供程序(如控制台、Debug、文件),不耦合具体输出方式。

关键点:

  • ILogger 是泛型接口,T 一般填当前类类型,用于日志分类和过滤
  • 必须通过 DI 容器获取实例(Program.csbuilder.Services.AddLogging() 已默认注册)
  • 不要 new Logger —— 手动构造会丢失作用域上下文、配置和性能优化

想写入文件?别自己拼 StreamWriter,用 FileLoggerProvider 或第三方包

.NET 原生不带文件日志提供程序,Microsoft.Extensions.Logging.ConsoleDebug 是自带的,但 File 需要额外引入。官方没推内置文件提供者,所以常见选择是:

  • Microsoft.Extensions.Logging.Configuration + NLogSerilog(更推荐,配置灵活、支持滚动、结构化)
  • 轻量场景可用社区维护的 Microsoft.Extensions.Logging.File(注意 NuGet 包名是 Microsoft.Extensions.Logging.File,不是官方第一方)
  • 自己封装 ILoggerProvider 成本高,且容易在并发写入、日志轮转、编码错误上翻车

示例(Serilog):
Log.Logger = new LoggerConfiguration().WriteTo.File("logs/log-.txt", rollingInterval: RollingInterval.Day).Create();
然后在 Program.cs 中调用 builder.Host.UseSerilog()

LogInformation / LogWarning / LogError 别乱用级别

日志级别不是“越详细越好”,它直接影响性能和可观测性:

  • LogDebug:仅开发期启用,发布后默认被过滤掉(除非显式配置最低级别为 Debug
  • LogInformation:记录常规流程,比如“用户登录成功”,但别塞敏感字段(如密码明文、token)
  • LogWarning:异常未抛出但可能有问题,比如重试三次后降级处理
  • LogError:必须伴随 Exception 对象传入(logger.LogError(ex, "msg")),否则堆丢失

错误示范:logger.LogError("Failed to connect: " + ex.Message) → 堆栈没了,无法定位根本原因

Motiff
Motiff

Motiff是由猿辅导旗下的一款界面设计工具,定位为“AI时代设计工具”

下载

结构化日志里别用字符串拼接,用占位符

logger.LogInformation("User {UserId} logged in at {Time}", userId, DateTime.Now) 这样写,才能被 Serilog/NLog 正确提取字段、做筛选和聚合。

反模式:logger.LogInformation($"User {userId} logged in at {DateTime.Now}") → 日志变成纯文本,所有结构化能力失效。

占位符名不强制匹配变量名,但建议一致;大括号内不能有空格或表达式(如 {userId.ToString()} 不合法)

复杂对象可直接传入,Serilog 会自动序列化(前提是启用了相关配置),但避免传入含循环引用或敏感属性的对象

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

309

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

317

2023.10.25

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6298

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

827

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1076

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

1466

2024.03.01

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

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

402

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

213

2023.09.04

1688阿里巴巴货源平台入口与批发采购指南
1688阿里巴巴货源平台入口与批发采购指南

本专题整理了1688阿里巴巴批发进货平台的最新入口地址与在线采购指南,帮助用户快速找到官方网站入口,了解如何进行批发采购、货源选择以及厂家直销等功能,提升采购效率与平台使用体验。

21

2026.02.06

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Rust 教程
Rust 教程

共28课时 | 5.5万人学习

Git 教程
Git 教程

共21课时 | 3.4万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号