.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

相关文章

史上最全nginx详细参数配置

《史上最全nginx详细参数配置》Nginx是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用代理服务器(TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人IgorSyso... 目录基本命令默认配置搭建站点根据文件类型设置过期时间禁止文件缓存防盗链静态文件压缩指定定错误页面跨域问题

nginx负载均衡及详细配置方法

《nginx负载均衡及详细配置方法》Nginx作为一种高效的Web服务器和反向代理服务器,广泛应用于网站的负载均衡中,:本文主要介绍nginx负载均衡及详细配置,需要的朋友可以参考下... 目录一、 nginx负载均衡策略1.1 基本负载均衡策略1.2 第三方策略1.3 策略对比二、 nginx配置2.1

Java调用Python的四种方法小结

《Java调用Python的四种方法小结》在现代开发中,结合不同编程语言的优势往往能达到事半功倍的效果,本文将详细介绍四种在Java中调用Python的方法,并推荐一种最常用且实用的方法,希望对大家有... 目录一、在Java类中直接执行python语句二、在Java中直接调用Python脚本三、使用Run

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Python中Flask模板的使用与高级技巧详解

《Python中Flask模板的使用与高级技巧详解》在Web开发中,直接将HTML代码写在Python文件中会导致诸多问题,Flask内置了Jinja2模板引擎,完美解决了这些问题,下面我们就来看看F... 目录一、模板渲染基础1.1 为什么需要模板引擎1.2 第一个模板渲染示例1.3 模板渲染原理二、模板

浅析如何使用xstream实现javaBean与xml互转

《浅析如何使用xstream实现javaBean与xml互转》XStream是一个用于将Java对象与XML之间进行转换的库,它非常简单易用,下面将详细介绍如何使用XStream实现JavaBean与... 目录1. 引入依赖2. 定义 JavaBean3. JavaBean 转 XML4. XML 转 J

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField