示例代码:https://download.youkuaiyun.com/download/hefeng_aspnet/90113811
介绍
一般来说,大多数开发人员都会同意日志是应用程序的核心。
由于多种原因,我看到他们给出了这样的意见,因为它可以帮助我们开发人员进行调试和故障排除。以及保持应用程序在生产中的平稳运行。
如果您已经编程一段时间了,并且尝试过并了解过一些日志记录框架,并且想要至少对日志记录是什么有一个很好的回顾,那么您来对地方了。
在本文中,我们将讨论什么是使用 Log4Net 的日志记录框架。我们还将展示其优势和不同类型的日志级别。
另外,在后面的部分,我们会展示一些代码示例。
好的,我们开始吧。
什么是 Log4net?
它是一个日志框架工具,可以显著减少与日志相关的工作量。
此外,它是 Apache 维护的 .NET 应用程序中使用最广泛的日志框架之一。
此外,它基于流行的 Java 日志框架 Log4j。
Log4Net 可以在 .NET Core 6 上使用吗?
是的,您仍然可以使用 Log4Net 帮助您通过 .NET Core 6 输出文本文件、数据库和其他目标的日志语句,通过NuGet 包安装 log4net 版本 2.0.7(此版本针对 .NET Standard )及更高版本。
日志框架的好处?
使用日志框架可以处理日志记录的许多重要且不便的方面,例如,在哪里记录、是否附加到现有文件或创建新文件、消息日志的格式如何等等。
此外,日志框架为开发人员处理的另一个关键问题是日志应该重定向或定位到哪里。
这就是为什么日志框架可以帮助您通过简单地拥有或更改配置轻松地将日志重定向到不同的位置。
此外,一旦您在 .NET/.NET Core 应用程序中构建了日志基础设施,无需更改任何代码,您就可以将日志写入文件磁盘、数据库、现有日志管理系统或可能数十个其他位置。
因此,日志文件是开发人员的资产之一。这是因为日志为您提供了更明确的格式和详细信息。试想一下,当生产中出现问题时,大多数情况下开发人员都会检查日志或至少向生产服务器的系统管理员请求日志。
使用不同类型的日志级别
处理日志时,我们必须能够确定要使用的适当日志类型。
Debug、Info、Warning、Error、Fatal的用法各不相同。
但是,很明显,有了它们的名称,您就能知道在何处以及何时使用它们。想象一下,如果您在应用程序代码的每个方面都使用了 Debug。
以下是 Log4Net 级别:全部、调试、信息、警告、错误、严重和关闭。
Appender 的类型
- 滚动文件附加器 - 根据您的过滤器创建日志文件,允许您根据日期(每天一个文件)获取日志文件,或者在文件达到一定大小时将其分成小块。
- 文件附加器 — 将日志消息附加到某个文件。
- ADO.NET Appender - 将消息记录到某个数据库,例如 MS SQL Server、MS Access、Oracle、IBMDB2、SQLite 等。
- 控制台附加程序 – 日志消息通常发送到控制台输出流。换句话说,您将能够立即在控制台窗口上看到日志。
Log4Net 和 .NET Core 控制台应用程序
步骤 1
让我们创建一个空白解决方案,您可以将其命名为任何您想要的名称,但就我而言,我将其命名为“Log4NetSample.Solution”,不带引号。
请参阅下面的屏幕截图以了解如何创建新的空白解决方案。



第 2 步
让我们添加一个新的类库,就我而言,我将其命名为“Log4NetSample.LogUtility”,不带引号。
请参阅下面的屏幕截图,了解如何将新项目添加到解决方案。




步骤3
在项目“Log4NetSample.LogUtility”中,目标是创建一个利用 Log4Net 库的小型实用程序类。
此外,我们只关注调试、信息和错误。
但是,在我们开始展示代码之前,我们需要安装一个 NuGet 包“log4net”。
好的,打开包管理器控制台并安装 log4net 版本 2.0.15。

安装后,您现在可以在下面添加以下代码。
注意:您可以将代码复制并粘贴到“Class1.cs”,稍后将其重命名为“Logger.cs”。或者,您可以删除文件“Class1.cs”,然后创建一个新类“Logger.cs”,然后复制并粘贴以下代码。
using log4net;
using System.Reflection;
namespace Log4NetSample.LogUtility {
public interface ILogger {
void Debug(string message);
void Info(string message);
void Error(string message, Exception ? ex = null);
}
public class Logger: ILogger {
private readonly ILog _logger;
public Logger() {
this._logger = LogManager.GetLogger(MethodBase.GetCurrentMethod()?.DeclaringType);
}
public void Debug(string message) {
this._logger?.Debug(message);
}
public void Info(string message) {
this._logger?.Info(message);
}
public void Error(string message, Exception ? ex = null) {
this._logger?.Error(message, ex?.InnerException);
}
}
}
这现在还没有用,但我们稍后会看到它的用途。
下一步,让我们创建一个新的控制台应用程序项目并使用我们创建的日志实用程序。
步骤4
让我们首先创建控制台应用程序并通过 NuGet 包管理器安装 log4net。

我将控制台应用程序项目命名为“Log4NetSample.ConsoleApp”(不带引号)。



不要忘记将启动项目设置为“Log4NetSample.ConsoleApp”。在开始编码之前,我们需要使用控制台应用程序项目安装一个 NuGet 包“log4net”。

步骤5
在本节中,我们将了解如何添加配置文件以便与 log4net 的不同附加程序进行交互。

在配置文件中我们只关注 log4net.Appender.RollingFileAppender 和 log4net.Appender.ManagedColoredConsoleAppender。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<appender name="console" type="log4net.Appender.ManagedColoredConsoleAppender">
<mapping>
<level value="INFO" />
<forecolor value="Green" />
</mapping>
<mapping>
<level value="WARN" />
<forecolor value="Yellow" />
</mapping>
<mapping>
<level value="ERROR" />
<forecolor value="Red" />
</mapping>
<mapping>
<level value="DEBUG" />
<forecolor value="Blue" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger.%method[%line] - %message%newline" />
</layout>
</appender>
<appender name="file" type="log4net.Appender.RollingFileAppender">
<file value="main.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="25MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger.%method[%line] - %message%newline" />
</layout>
</appender>
</log4net>
</configuration>
在我们检查配置文件的标签之前,不要忘记将属性“复制到输出目录”设置为“始终复制”。

配置中有两个重要部分<root>和<appender>。
<root>是定义日志级别、应显示什么以及使用什么附加程序的地方。
< appender -ref/>是一个具有属性ref的标签,该属性设置为我们在标签部分中定义的附加器的类型。
<appender>标签有 2 个属性:名称和类型。
可以将类型设置为某种类型的附加器,例如,我们拥有的第一个附加器设置为log4net.Appender.ManagedColoredConsoleAppender,这意味着我们要使用ManageColoredConsoleAppender,它将事件使用颜色记录到标准输出流,默认情况下输出写入控制台的标准输出流。
第 6 步
最后,使用 log4net 和我们创建的简单日志实用程序的代码示例。
此外,在此步骤的后半部分,我们将展示控制台应用程序的输出和文件的示例输出。
using log4net;
using log4net.Config;
using Log4NetSample.LogUtility;
using System.Reflection;
var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepository, new FileInfo("log4netconfig.config"));
var demo = new Logger();
demo.Info("Starting the console application");
try {
demo.Debug($ "Starting {MethodBase.GetCurrentMethod()?.DeclaringType}");
throw new Exception("Sample Error inside the try catch block code");
} catch (Exception ex) {
demo.Error(ex.Message, ex.InnerException);
}
demo.Debug("Waiting for user input");
Console.ReadLine();
demo.Info("Ending application");
输出
有关控制台输出,请参见下面的屏幕截图。

当然,我们已经配置了一个文件附加器,请查看 main.log 的输出。

结论
在这篇文章中,我们讨论了什么是 Log4net、它的优点、不同类型的日志级别和附加器的类型,并展示了一个工作示例来展示如何在 .NET Core 6 控制台应用程序中使用 Log4net。
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

2016

被折叠的 条评论
为什么被折叠?



