网络编程 
首页 > 网络编程 > 浏览文章

.net core整合log4net的解决方案

(编辑:jimmy 日期: 2024/11/17 浏览:3 次 )

概述

log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。

背景

前两天,曾经的一个同事咨询我,怎样将log4net以中间件的形式整合到core里边去。我不假思索的回答,这种问题应该有人做过吧,他说没有。于是,我去博客园搜了下,发现还真没有,全部都是传统.NET那一套,直接LogManager.GetLogger,于是趁着周末有时间,决定调研下这个问题。去巨硬官网快速浏览了下,扩展第三方日志的核心就在于两个接口:ILogger和ILoggerProvider。于是建好解决方案,刷刷刷实现这两个接口,实现差不多了查相关资料时,猛然发现,卧槽,已经有国外同仁实现过了,我尼玛的辛苦写半天,这下彻底垮了。。。

切换四路

本着偷懒、鄙视瞎造轮子/装逼的心态, 直接把解决方案切换到开源实现。实际上顺便看了下第三方实现源码,四路也是一致的,实现那两个接口。

解决方案如下:

.net core整合log4net的解决方案

包引用如下:

.net core整合log4net的解决方案

最上边的不多说,第二个别问我,第三个就是core整合log4net的主角。关于这个,得特别说明下,最新版本是2.2.1,但我并没有引用最新的,而是2.1.0,因为目前有些第三方包最新版本引用的原子包是最新的,而上边第二个鬼东东Microsoft.AspNetCore.App这个框架包底层的原子包却并不是,所以如果引用最新的第三方包,很可能会报某个原子包依赖版本不对的错误。解决方案有二:1、哪个包报错,你单独安装哪个原子包的最新版本;2、切换第三方包的版本到较次,找到能够兼容当前Microsoft.AspNetCore.App的实现。解决方案1的问题是,你更新了这个原子包,它的依赖包又出错,你更新了它的依赖的依赖,它的依赖的依赖的依赖又出错。。。所以,方便起见,我直接用了Microsoft.Extensions.Logging.Log4Net.AspNetCore的较低版本。

log4net.config不再截图或上代码,跟以前的德行没啥两样。

接下来,注册log4net:

.net core整合log4net的解决方案

图中,前两行的作用是过滤掉System和Microsoft开头的命名空间下的组件产生的警告级别一下的日志,实际上主要就是一些框架性日志。第三行便是注册log4net中间件。

接下来新建控制器,注入日志实践下效果:

.net core整合log4net的解决方案

上图两个红框,上边一个是构造器注入日志接口,下边是调用日志组件记录日志。

好,接下来我们去看看系统产生的日志,先调用:

.net core整合log4net的解决方案

控制台窗口:

.net core整合log4net的解决方案

OK,日志已经输出成功,接下来,我们看关键性的输出到文件:

.net core整合log4net的解决方案

看到没有,日志已经成功经由log4net输出到文件。

总结

感觉没什么好总结的,.net core提供的扩展已经很开放了,虽然log4net目前比较操蛋,但这对咱大部分.NET开发者来说应该都不是事儿。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

上一篇:ASP.NET Core开发教程之Logging利用NLog写日志文件
下一篇:ASP.NET MVC中异常Exception拦截的深入理解
一句话新闻
Windows上运行安卓你用过了吗
在去年的5月23日,借助Intel Bridge Technology以及Intel Celadon两项技术的驱动,Intel为PC用户带来了Android On Windows(AOW)平台,并携手国内软件公司腾讯共同推出了腾讯应用宝电脑版,将Windows与安卓两大生态进行了融合,PC的使用体验随即被带入到了一个全新的阶段。
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 网站地图 SiteMap