这篇文章主要介绍“.net Core怎么自定义日志组件”,在日常操作中,相信很多人在.Net Core怎么自定义日志组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”.Net C
这篇文章主要介绍“.net Core怎么自定义日志组件”,在日常操作中,相信很多人在.Net Core怎么自定义日志组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”.Net Core怎么自定义日志组件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创建一个自定义Logger,目的是将指定的等级日志输出到控制台。所以我们创建一个ExtensionLogger
的类,指定输出的日志等级。所以在这之前,我们需要配置一下输入日志的等级,因此我们需要增加一个等级的配置类ExtensionsConfiguration
。
在ExtensionsConfiguration
中,
public class ExtensionsConfiguration{ /// <summary> /// 日志等级 /// </summary> public LogLevel LogLevel { get; set; } = LogLevel.Warning;}
再自定义日志记录类ExtensionLogger
,实现接口ILogger
,
public class ExtensionsLogger : ILogger{ private readonly ExtensionsConfiguration _config; public ExtensionsLogger(ExtensionsConfiguration extensionsConfiguration) { _config = extensionsConfiguration; } public IDisposable BeginScope<TState>(TState state) { return null; } public bool IsEnabled(LogLevel logLevel) { return logLevel == _config.LogLevel; } public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> fORMatter) { if (!IsEnabled(logLevel)) { return; } Console.WriteLine($" {logLevel} - {eventId.Id} : " + formatter(state, exception)); }}
根据ILogger
接口实现,其中实现Log()
接口方法,将日志输出到指定目标,这里是输出到控制台,在设置了日志等级的情况条件下,当满足条件后,才能输出对应的日志。
在创建了日志输出记录后,我们同时需要提供一个日志程序来增加和创建上面的Logger
记录,所以我们通过自定义日志提供器类ExtensionsLoggerProvider
,实现ILoggerProvider
类。
public class ExtensionsLoggerProvider : ILoggerProvider{ private readonly ExtensionsConfiguration _config; public ExtensionsLoggerProvider(ExtensionsConfiguration extensionsConfiguration) { _config = extensionsConfiguration; } public ILogger CreateLogger(string cateGoryName) { return new ExtensionsLogger(_config); } public void Dispose() { }}
基于ILoggerProvider
接口实现自定义类,实现方法CreateLogger
,来创建上面的日志记录。
在Startup.cs中,通过Configure
方法调用配置日志记录。
public void Configure(IApplicationBuilder app, IWEBHostEnvironment env , ILoggerFactory loggerFactory) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } // 注入ILogggerFactory,然后配置参数 //添加日志等级 loggerFactory.AddProvider(new ExtensionsLoggerProvider(new ExtensionsConfiguration { LogLevel= LogLevel.Warning })); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }
在此之前,我们可以清空默认的配置,然后根据日志等级,在控制台中输出对应的日志记录。
在等级为Information
情况下,输出效果如下:
这个就是我们通过自定义的方式实现的按日志等级输出的记录。
为LoggerFactory扩张一个方法,提供增加日志写文件方式的入口。相关的配置来自appsettings.JSON
实现我们的logger提供程序,实现ILoggerProvider接口,关键方法CreateLogger,创建真正写日志的logger。对当前的logger可以做适当的缓存,配置logger
实现我们的logger,实现ILogger接口。真正将log写入file。
到此,关于“.Net Core怎么自定义日志组件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!
--结束END--
本文标题: .Net Core怎么自定义日志组件
本文链接: https://www.lsjlt.com/news/341129.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0