.NET 7(C#)配置使用log4net日志框架的方法

2023-12-26 02:04

本文主要是介绍.NET 7(C#)配置使用log4net日志框架的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

<?xml version="1.0" encoding="utf-8"?>
<log4net><appender name="rollingAppender" type="log4net.Appender.RollingFileAppender"><file value="log4\app.log" /><appendToFile value="true" /><lockingModel type="log4net.Appender.FileAppender+MinimalLock" /><!-- 可以为:Once|Size|Date|Composite --><!-- Composite为Size和Date的组合 --><rollingStyle value="Composite" /><!-- 当备份文件时,为文件名加的后缀 --><datePattern value="yyyyMMdd.TXT" /><!-- 日志最大个数,都是最新的 --><!-- rollingStyle节点为Size时,只能有value个日志 --><!-- rollingStyle节点为Composite时,每天有value个日志 --><maxSizeRollBackups value="20" /><!-- 可用的单位:KB|MB|GB --><maximumFileSize value="3MB" /><!-- true时当前最新日志文件名永远为file配置项中的名字 --><staticLogFileName value="true" /><!-- 输出级别的日志 --><filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="ALL" /><param name="LevelMax" value="FATAL" /></filter><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/></layout><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/></layout></appender><root><!-- 控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF --><!-- OFF:0 --><!-- FATAL:FATAL --><!-- ERROR: ERROR,FATAL --><!-- WARN: WARN,ERROR,FATAL --><!-- INFO: INFO,WARN,ERROR,FATAL --><!-- DEBUG: INFO,WARN,ERROR,FATAL --><!-- ALL: DEBUG,INFO,WARN,ERROR,FATAL --><priority value="ALL"/><level value="INFO"/><appender-ref ref="rollingAppender" /></root>
</log4net>

2)log4net.Appender.ConsoleAppender

<?xml version="1.0" encoding="utf-8"?>
<log4net><appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /></layout></appender><root><!-- 控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF --><!-- OFF:0 --><!-- FATAL:FATAL --><!-- ERROR: ERROR,FATAL --><!-- WARN: WARN,ERROR,FATAL --><!-- INFO: INFO,WARN,ERROR,FATAL --><!-- DEBUG: INFO,WARN,ERROR,FATAL --><!-- ALL: DEBUG,INFO,WARN,ERROR,FATAL --><priority value="ALL"/><level value="INFO"/><appender-ref ref="ConsoleAppender" /></root>
</log4net>

3)log4net.Appender.SmtpAppender

<?xml version="1.0" encoding="utf-8"?>
<log4net><appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"><to value="to@example.com" /><from value="from@example.com" /><subject value="Log4Net Error" /><smtpHost value="smtp.example.com" /><bufferSize value="512" /><lossy value="false" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /></layout></appender><root><!-- 控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF --><!-- OFF:0 --><!-- FATAL:FATAL --><!-- ERROR: ERROR,FATAL --><!-- WARN: WARN,ERROR,FATAL --><!-- INFO: INFO,WARN,ERROR,FATAL --><!-- DEBUG: INFO,WARN,ERROR,FATAL --><!-- ALL: DEBUG,INFO,WARN,ERROR,FATAL --><priority value="ALL"/><level value="INFO"/><appender-ref ref="log4net.Appender.SmtpAppender" /></root>
</log4net>

3、log4net配置及使用示例

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

using Microsoft.OpenApi.Models;using NLog.Web;var builder = WebApplication.CreateBuilder(args);// 配置log4netbuilder.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<WeatherForecastController> _logger;public WeatherForecastController(ILogger<WeatherForecastController> logger){_logger = logger;}[HttpGet(Name = "GetWeatherForecast")]public IEnumerable<string> Get([FromServices] UtilityWebContext context,[FromServices] IUser userService,[FromServices] SwaggerService swaggerService){_logger.LogError("error message");return new List<string>() { _logger.ToString() };}}
}

4、log4net 与NLog 对比

特性

NLog

log4net

性能

在高性能场景下表现更好,

特别是异步日志记录方面。

性能稳定,

但可能在某些高性能需求下逊色于NLog。

配置

灵活和动态的配置选项,

支持代码配置和外部文件配置。

通常基于 XML 文件配置,

功能强大但可能复杂。

扩展性

提供良好的支持,

易于添加自定义逻辑。

支持自定义扩展,

但可能不如NLog直观。

API

更现代和易于使用。

功能强大但可能对初学者较复杂。

文档

拥有广泛的文档和社区支持。

长期的用户基础,

但更新和社区活跃度可能不如NLog。

特性

支持结构化日志、

条件日志记录等高级功能。

提供丰富的日志记录功能,

但在现代日志需求上可能不够灵活。

成熟度

较新,但已稳定且不断更新。

较早开发的日志库,

具有更成熟的特性。

推荐

需要高性能、现代化API

或特定高级功能。

项目已使用log4net

或需要稳定且经过验证的解决方案。

这篇关于.NET 7(C#)配置使用log4net日志框架的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/537752

相关文章

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

golang中reflect包的常用方法

《golang中reflect包的常用方法》Go反射reflect包提供类型和值方法,用于获取类型信息、访问字段、调用方法等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录reflect包方法总结类型 (Type) 方法值 (Value) 方法reflect包方法总结

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优