.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 中,通过简单的配置和集成,可以快速实现高效的日志管理,帮助开发者更好地监控和调试应用程序。`

相关推荐
勇哥java实战分享9 小时前
PaddleOCR 太慢?我换成 RapidOCR 后,速度直接起飞
后端
苏三说技术13 小时前
LangChain4j 和 LangGraph4j,哪个更好?
后端
ServBay15 小时前
7 个AI开发中真正用得上的 MCP Server,配合Claude Code食用效果更佳
后端·claude·mcp
妙码生花15 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十五):优化细节、网络请求封装
前端·后端·ai编程
用户67570498850215 小时前
Go 语言里判断字符串为空,90% 的人都写错了!
后端·go
用户67570498850216 小时前
Go 进阶必修:90% 的人都没用对的“表驱动法”
后端·go
小兔崽子去哪了16 小时前
Java 生成二维码解决方案
java·后端
苍何16 小时前
懂事的 Agent 已经开始自己看屏幕干活了,效率起飞!
后端
掘金码甲哥16 小时前
1分钟买不了吃亏系列: nginx动态域名解析
后端