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