log4net 是一个高效、灵活且广泛使用的日志记录库,专门用于 .NET 框架。它是 Apache 的一个开源项目Apache log4j框架在Microsoft .NET平台的实现。log4net 旨在提供一个简单、易用但功能强大的日志系统。本文主要介绍.NET 7 中配置使用log4net,以及相关示例代码。

1、安装引用log4net

使用log4net需要安装引用log4net,若是 ASP.NET Core 项目,则需要安装 Microsoft.Extensions.Logging.Log4Net.AspNetCore。

1)log4net

在Nuget管理程序中,搜索 "log4net",然后点击安装。

2)Microsoft.Extensions.Logging.Log4Net.AspNetCore

在Nuget管理程序中,搜索 "Microsoft.Extensions.Logging.Log4Net.AspNetCore",然后点击安装。

2、log4net 配置文件

log4net 中配置文件可以使用XML格式的, 具体如下,

1)配置说明

配置项 类型 描述 rollingAppender log4net.Appender.RollingFileAppender 滚动文件记录器, 用于将日志写入文件。 file String 日志文件的路径和名称。 appendToFile Boolean 是否追加内容到现有文件。 lockingModel log4net.Appender.FileAppender+MinimalLock 文件锁定模型, 用于多线程环境。 rollingStyle Composite 滚动文件的样式, 如按大小或日期。 datePattern String 备份文件的日期格式。 maxSizeRollBackups Int 最大备份文件数量。 maximumFileSize String 单个文件的最大大小。 staticLogFileName Boolean 是否使用静态日志文件名。 filter log4net.Filter.LevelRangeFilter 日志级别范围过滤器。 layout log4net.Layout.PatternLayout 日志的布局格式。 AdoNetAppender_SqlServer log4net.Appender.AdoNetAppender 用于将日志写入SQL Server的记录器。 bufferSize Int 缓冲区大小, 控制写入数据库的频率。 connectionType String 数据库连接的类型。 connectionString String 数据库连接字符串。 commandText String 写入数据库的SQL命令文本。 priority String 根记录器的优先级。 level String 根记录器的日志级别。 appender-ref String 引用的记录器名称。

2)Appender

类型 描述 log4net.Appender.AdoNetAppender 使用准备好的语句或存储过程将日志记录事件写入数据库。 log4net.Appender.AnsiColorTerminalAppender 将颜色突出显示的日志事件写入 ANSI 终端窗口。 log4net.Appender.AspNetTraceAppender 将日志记录事件写入 ASP 跟踪上下文。 然后可以在 ASP 页的末尾或在 ASP 跟踪页上呈现这些。 log4net.Appender.BufferingForwardingAppender 在将事件转发给子附加程序之前缓冲记录事件。 log4net.Appender.ColoredConsoleAppender 将日志记录事件写入应用程序的控制台。 事件可能会进入标准我们的流或标准错误流。 事件可能具有为每个级别定义的可配置文本和背景颜色。 log4net.Appender.ConsoleAppender 将日志记录事件写入应用程序的控制台。 事件可能会进入标准我们的流或标准错误流。 log4net.Appender.DebugAppender 将日志事件写入 .NET 系统。 log4net.Appender.EventLogAppender 将日志记录事件写入 Windows 事件日志。 log4net.Appender.FileAppender 将日志记录事件写入文件系统中的文件。 log4net.Appender.ForwardingAppender 将日志记录事件转发给子附加程序。 log4net.Appender.LocalSyslogAppender 将日志记录事件写入本地 syslog 服务(仅限 UNIX)。 log4net.Appender.MemoryAppender 将日志记录事件存储在内存缓冲区中。 log4net.Appender.NetSendAppender 将日志事件写入 Windows Messenger 服务。 这些消息显示在用户终端的对话框中。 log4net.Appender.OutputDebugStringAppender 将日志记录事件写入调试器。如果应用程序没有调试器, 系统调试器会显示该字符串。 如果应用程序没有调试器并且系统调试器未激活, 则忽略该消息。 log4net.Appender.RemoteSyslogAppender 使用 UDP 网络将日志记录事件写入远程系统日志服务。 log4net.Appender.RemotingAppender 使用 .NET 远程处理将日志记录事件写入远程接收器。 log4net.Appender.RollingFileAppender 将日志记录事件写入文件系统中的文件。 RollingFileAppender 可以配置为根据日期 或文件大小限制记录到多个文件。 log4net.Appender.SmtpAppender 将日志记录事件发送到电子邮件地址。 log4net.Appender.SmtpPickupDirAppender 将 SMTP 消息作为文件写入拾取目录。 然后可以通过 SMTP 代理 (例如 IIS SMTP 代理)读取和发送这些文件。 log4net.Appender.TelnetAppender 客户端通过 Telnet 连接以接收日志记录事件。 log4net.Appender.TraceAppender 将日志记录事件写入 .NET 跟踪系统。 log4net.Appender.UdpAppender 使用 UdpClient 将日志事件作为 无连接 UDP 数据报发送到远程主机或多播组。

3)log4net.Appender.RollingFileAppender

2)log4net.Appender.ConsoleAppender

3)log4net.Appender.SmtpAppender

3、log4net配置及使用示例

下面是log4net的配置文件配置及使用,如下,

using Microsoft.OpenApi.Models;

using NLog.Web;

var builder = WebApplication.CreateBuilder(args);

// 配置log4net

builder.Logging.AddLog4Net("log4net.Config");

builder.Services.AddControllers();

app.UseDefaultFiles();

app.UseStaticFiles();

app.MapControllers();

app.Run();

使用示例:

using Microsoft.AspNetCore.Mvc;

using UtilityWeb.API.Services;

using UtilityWeb.Core;

using UtilityWeb.Tools;

namespace UtilityWeb.API.Controllers

{

[ApiController]

[Route("[controller]")]

public class WeatherForecastController : ControllerBase

{

private static readonly string[] Summaries = new[]

{

"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"

};

private readonly ILogger _logger;

public WeatherForecastController(ILogger logger)

{

_logger = logger;

}

[HttpGet(Name = "GetWeatherForecast")]

public IEnumerable Get([FromServices] UtilityWebContext context,

[FromServices] IUser userService,

[FromServices] SwaggerService swaggerService)

{

_logger.LogError("error message");

return new List() { _logger.ToString() };

}

}

}

4、log4net 与NLog 对比

特性 NLog log4net 性能 在高性能场景下表现更好, 特别是异步日志记录方面。 性能稳定, 但可能在某些高性能需求下逊色于NLog。 配置 灵活和动态的配置选项, 支持代码配置和外部文件配置。 通常基于 XML 文件配置, 功能强大但可能复杂。 扩展性 提供良好的支持, 易于添加自定义逻辑。 支持自定义扩展, 但可能不如NLog直观。 API 更现代和易于使用。 功能强大但可能对初学者较复杂。 文档 拥有广泛的文档和社区支持。 长期的用户基础, 但更新和社区活跃度可能不如NLog。 特性 支持结构化日志、 条件日志记录等高级功能。 提供丰富的日志记录功能, 但在现代日志需求上可能不够灵活。 成熟度 较新,但已稳定且不断更新。 较早开发的日志库, 具有更成熟的特性。 推荐 需要高性能、现代化API 或特定高级功能。 项目已使用log4net 或需要稳定且经过验证的解决方案。

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: