C# 应用程序中的日志记录:初学者的最佳实践

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么日志记录很重要?

\n\n

想象一下,您的 C# 应用程序正在生产环境中运行。突然,用户报告了一个错误,但您无法理解哪里出了问题。没有日志,您就像没有仪表的飞行员。日志记录是记录应用程序运行信息的过程:错误、警告、调试消息和关键事件。

\n\n

在本文中,我们将为 C# (.NET) 的初学者开发者解析日志记录的最佳实践。您将了解如何配置日志记录、使用哪些工具以及如何避免典型错误。

\n\n

1. 选择 C# 中的日志记录工具

\n\n

在 .NET 生态系统中,有几种流行的日志记录库。对于初学者,我们推荐三个主要选项:

\n\n

1.1. 内置 ILogger (Microsoft.Extensions.Logging)

\n\n

从 .NET Core 开始,Microsoft 提供了内置的 ILogger 接口。它易于使用,无需安装第三方库。

\n\n
using Microsoft.Extensions.Logging;\n\npublic class OrderService\n{\n    private readonly ILogger<OrderService> _logger;\n\n    public OrderService(ILogger<OrderService> logger)\n    {\n        _logger = logger;\n    }\n\n    public void ProcessOrder(int orderId)\n    {\n        _logger.LogInformation("正在处理订单 {OrderId}", orderId);\n        // 处理逻辑\n    }\n}
\n\n

1.2. Serilog — 灵活且强大

\n\n

Serilog 是最流行的库之一。它支持结构化日志记录,便于数据分析。通过 NuGet 安装:Install-Package Serilog.AspNetCore

\n\n
using Serilog;\n\npublic class Program\n{\n    public static void Main(string[] args)\n    {\n        Log.Logger = new LoggerConfiguration()\n            .MinimumLevel.Debug()\n            .WriteTo.Console()\n            .WriteTo.File("logs/app.log", rollingInterval: RollingInterval.Day)\n            .CreateLogger();\n\n        try\n        {\n            Log.Information("应用程序已启动");\n            CreateHostBuilder(args).Build().Run();\n        }\n        catch (Exception ex)\n        {\n            Log.Fatal(ex, "应用程序因错误而终止");\n        }\n        finally\n        {\n            Log.CloseAndFlush();\n        }\n    }\n}
\n\n

1.3. NLog — 经典选择

\n\n

NLog 是另一个成熟的库,通过配置文件提供广泛的配置选项。

\n\n
// 通过 appsettings.json 配置\n{\n  "NLog": {\n    "targets": {\n      "console": {\n        "type": "Console",\n        "layout": "${longdate}|${level:uppercase=true}|${message}"\n      },\n      "file": {\n        "type": "File",\n        "fileName": "logs/app.log",\n        "layout": "${longdate}|${level:uppercase=true}|${message}"\n      }\n    },\n    "rules": [\n      { "logger": "*", "minLevel": "Info", "writeTo": "console,file" }\n    ]\n  }\n}
\n\n

2. 日志级别:何时使用什么

\n\n

正确使用日志级别是良好实践的基础。在 C# (.NET) 中定义了以下级别(从最严重到最不严重):

\n\n
    \n
  • Trace (0) — 最详细的调试信息。仅用于深度诊断。
  • \n
  • Debug (1) — 供开发人员使用的调试消息。在开发环境中启用,但在生产环境中禁用。
  • \n
  • Information (2) — 关于应用程序运行的一般信息消息(启动、成功操作)。
  • \n
  • Warning (3) — 关于潜在问题的警告,这些不是错误(例如,执行时间超限)。
  • \n
  • Error (4) — 需要注意但不会导致应用程序崩溃的错误。
  • \n
  • Critical (5) — 导致应用程序崩溃的严重错误。

博客

书籍推荐