.NET8 牵手 Log4Net:日志界 “最佳 CP” 出道,调试再也不秃头!

Log4net介绍

Log4Net 是 Apache 软件基金会为 .NET 平台开发的日志记录库,广泛用于记录和管理日志信息。它支持多种日志级别和输出目标,能够帮助开发者更高效地调试和监控应用程序。

安装和配置 Log4Net

首先,通过 NuGet 安装以下包:

  • log4net
  • Microsoft.Extensions.Logging.Log4Net.AspNetCore
  • 需要以JOSN格式来打印日志的还需要安装 log4net.Ext.Json

配置文件

创建log4net.config配置文件,定义日志记录的规则和输出格式。例如:

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<log4net>
  <appender name="JsonFileAppender" type="log4net.Appender.RollingFileAppender">
    <!-- 基础配置 -->
    <file value="logs\application.log" />
    <appendToFile value="true" />
	<!-- 滚动策略:Size(按大小)| Date(按日期)| Composite(组合) -->
    <rollingStyle value="Composite" />
    <!-- 文件大小限制 -->
    <maximumFileSize value="10MB" />
    <maxSizeRollBackups value="10" />
    <!-- 日期模式 -->
    <datePattern value="yyyyMMdd" />
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json">
      <!-- 使用标准类型装饰器 -->
      <decorator type="log4net.Layout.Decorators.StandardTypesDecorator, log4net.Ext.Json" />
      <!-- 自定义要输出的字段 -->
      <member value="time:date" />
      <member value="level:level" />
      <member value="logger:logger" />
      <member value="message:messageObject" />
      <member value="exception:exception" />
      <!-- 添加自定义属性 -->
      <member value="thread:thread" />
      <member value="user:username" />
      
      <!-- 默认输出所有属性 -->
      <!-- <default /> -->
    </layout>
  </appender>

  <appender name="JsonConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json">
      <decorator type="log4net.Layout.Decorators.StandardTypesDecorator, log4net.Ext.Json" />
      <member value="time:date" />
      <member value="level:level" />
      <member value="message:messageObject" />
      <default />
    </layout>
  </appender>

  <root>
    <level value="INFO" />
     <!-- 日志文件打印 -->
    <appender-ref ref="JsonFileAppender" />
     <!-- 控制台打印 -->
    <appender-ref ref="JsonConsoleAppender" />
  </root>
</log4net>

在项目中集成 Log4Net

Program.cs 文件中初始化 Log4Net:

C# 复制代码
var builder = WebApplication.CreateBuilder(args);
builder.Logging.AddLog4Net("log4net.config");
var app = builder.Build();
app.Run();

实际使用

C# 复制代码
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    [HttpGet(Name = "GetWeatherForecast")]
    public IEnumerable<WeatherForecast> Get()
    {
        _logger.LogInformation("LogInformation......");
        _logger.LogError("LogError......");
        _logger.LogWarning("LogWarning......");
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

打印效果

总结

Log4Net 提供了灵活的日志记录功能,支持多种输出目标和日志格式。在 .NET 8 中,通过简单的配置和集成,可以快速实现高效的日志管理,帮助开发者更好地监控和调试应用程序。`

相关推荐
Victor3561 小时前
MongoDB(118)如何在升级过程中进行数据备份?
后端
手握风云-1 小时前
Spring AI:让大模型住进 Spring 生态(三)
java·后端·spring
Victor3561 小时前
MongoDB(117)如何从旧版本迁移到新版本?
后端
pe7er4 小时前
window管理开发环境篇 - 持续更新
前端·后端
陈随易9 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·后端·程序员
陈随易10 小时前
AI时代,你还在坚持手搓文章吗
前端·后端·程序员
大鱼七成饱11 小时前
VMware NAT模式下固定内网IP(附详细图文)
后端
IT_陈寒13 小时前
Vue的这个响应式陷阱,我debug了一整天才爬出来
前端·人工智能·后端
兔子零102414 小时前
手把手教你在 Claude Code 中接入 DeepSeek-V4
后端
phenhorlin14 小时前
我做了个工具,让切换 Homebrew 镜像像切 npm 源一样简单
后端·shell