• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

.net core整合log4net的解决方案

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

概述

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

背景

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

切换四路

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

解决方案如下:

包引用如下:

最上边的不多说,第二个别问我,第三个就是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:

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

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

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

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

控制台窗口:

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

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

总结

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

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NET MVC中异常Exception拦截的深入理解发布时间:2022-02-05
下一篇:
ASP.NET Core开发教程之Logging利用NLog写日志文件发布时间:2022-02-05
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap