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

相关推荐
一 乐9 小时前
酒店客房预订|基于springboot + vue酒店客房预订系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
计算机毕设指导69 小时前
基于Spring Boot的防诈骗管理系统【源码文末联系】
java·spring boot·后端·spring·tomcat·maven·intellij-idea
开心就好20259 小时前
IOScer 开发环境证书包括哪些,证书、描述文件与 App ID 的协同管理实践
后端
码事漫谈9 小时前
终于找到我想要的远程工具了!
后端
我家领养了个白胖胖9 小时前
MCP模型上下文协议 Model Context Protocol & 百度地图MCP开发
java·后端·ai编程
Coder_Boy_10 小时前
基于DDD+Spring Boot 3.2+LangChain4j构建企业级智能客服系统
java·人工智能·spring boot·后端
开心猴爷10 小时前
苹果商店 App 上架要求,探讨如何通过系统审核
后端
开心就好202510 小时前
Flutter 应用加固在真实项目中的实践方式,当 Dart 之外还有一整个 IPA
后端
黄俊懿10 小时前
【深入理解SpringCloud微服务】Spring-Security作用与原理解析
java·后端·安全·spring·spring cloud·微服务·架构师
我是谁的程序员10 小时前
iOS 开发中证书创建与管理中的常见问题
后端