Anduin Xue
Anduin Xue

Anduin's Tech Blog

ILogger


Why you should never use `Console.WriteLine`

本文探讨了在库代码中使用`Console.WriteLine`的潜在问题及其替代方案。文章指出`Console`类与标准输出的强耦合特性会导致库代码与业务逻辑的依赖混乱——当库被单元测试框架或Web服务器调用时,控制台输出可能完全失效违背依赖倒置原则。通过引入`ILogger`接口抽象层可实现日志系统的解耦,使日志记录与具体输出方式分离。实际应用中可通过`Microsoft.Extensions.Logging`框架构建可扩展的日志体系:通过依赖注入注册日志服务后,开发者可动态切换控制台日志、文件日志或Application Insights等不同输出方式,同时支持日志分级和格式化功能。文章通过代码示例演示了如何通过服务集合配置日志系统,并指出即使不使用依赖注入框架也能通过`LoggerFactory`快速创建控制台日志实例。值得注意的是在终端UI应用或自定义日志实现器等特定场景下,`Console`类仍可作为直接交互工具。那么当你的应用需要同时处理多租户日志时,如何设计日志上下文关联机制?当服务器集群规模扩大时,控制台日志是否仍然能胜任分布式追踪需求?这需要开发者重新思考日志系统的架构设计边界。--Qwen3

C# .NET Core Console App .NET Logging ILogger

  • 1