介绍
借助日志记录,我们可以对本地系统进行端到端的可视性,而对于基于云的系统,我们只能提供一小部分可视性。您可以将日志写入磁盘或数据库中的文件,并发送错误电子邮件。
为 Log4Net 安装 NuGet 包
要使用 Log4Net 日志记录,首先需要添加 Log4Net 插件。要添加插件,您可以通过两种不同的方式进行。
- 管理 NuGet 包。
- NuGet 命令。
PM> Install-Package log4net -Version 2.0.8
或者,您可以 Microsoft.Extensions.Logging.Log4Net.AspNetCore
更新启动文件
public void Configure(IApplicationBuilder app,
IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddLog4Net();
}
添加 log4net.config 文件
我们需要点击“添加新”来向您的项目添加一个名为log4net.config的文件。
请参阅以下 log4net.config 代码日志文件。
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<lockingmodel type="log4net.Appender.FileAppender+MinimalLock">
<file value="logs/">
<datepattern value="yyyy-MM-dd hh.'txt'">
<staticlogfilename value="false">
<appendtofile value="true">
<rollingstyle value="Composite">
<maxsizerollbackups value="2">
<maximumfilesize value="15MB">
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%level %message %date">
</conversionpattern></layout>
</maximumfilesize></maxsizerollbackups></rollingstyle></appendtofile></staticlogfilename></datepattern></file></lockingmodel></appender>
<root>
<level value="ALL">
<appender-ref ref="RollingLogFileAppender">
</appender-ref></level></root>
</log4net>
Root 在 log4net.config 中是必需的,我们可以在其中定义日志级别和 appender-ref 来定义附加程序。例如 - FileAppender、ConsoleAppender。
<root>
<level value="ALL">
<appender-ref ref="RollingLogFileAppender">
</appender-ref></level></root>
布局
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%level %message %date">
</conversionpattern></layout>
日志级别
共有 7 个日志记录级别。
- 关闭-不记录任何内容(无法调用)
- 致命的
- 错误
- 警告
- 信息
- 调试
- ALL-所有内容都会被记录(无法调用)
不同的 Appender
- 滚动文件附加器 - 它写入输出窗口或命令窗口。
- 文件附加器-此附加器将写入文本文件。
- ADO.NET Appender-此附加器将写入数据库。
- 控制台附加器 - 此附加器执行与文件附加器相同的功能,但附加了仅在启动新日志文件之前存储一定量数据的选项。
Log4Net 的日志管理器
public static class Logger
{
private static readonly string LOG_CONFIG_FILE = @"log4net.config";
private static readonly log4net.ILog _log = GetLogger(typeof(Logger));
public static ILog GetLogger(Type type)
{
return LogManager.GetLogger(type);
}
public static void Debug(object message)
{
SetLog4NetConfiguration();
_log.Debug(message);
}
private static void SetLog4NetConfiguration()
{
XmlDocument log4netConfig = new XmlDocument();
log4netConfig.Load(File.OpenRead(LOG_CONFIG_FILE));
var repo = LogManager.CreateRepository(
Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);
}
}
加载并读取 Log4Net 配置文件
您需要将配置文件命名为程序集名称,并且需要具有您指定的扩展名。以下是示例。
Private static void SetLog4NetConfiguration()
{
XmlDocument log4netConfig = new XmlDocument();
log4netConfig.Load(File.OpenRead(LOG_CONFIG_FILE));
var repo = LogManager.CreateRepository(
Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);
}
参考开源地址:GitHub - huorswords/Microsoft.Extensions.Logging.Log4Net.AspNetCore: Allows to configure Log4net as Microsoft Extensions Logging handler on any ASP.NET Core application. Original code proposal by @anuraj --> https://dotnetthoughts.net/how-to-use-log4net-with-aspnetcore-for-logging/
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。