.netcore 整合 log4net

北京赛车pk10软件计划手机版下载 www.3gt5.cn  

1.背景

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

2.切换四路

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

解决方案如下:

 

包引用如下:

最上边的不多说,第二个别问我,第三个就是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输出到文件。

 

3.总结

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

 

posted @ 2018-07-01 14:42 GUOKUN 阅读(...) 评论(...) 编辑 收藏
  • 周国平:男女之爱已经很强烈了,但亲子之爱更强烈 2019-05-22
  • 君弘精益精牌讲师投资课 2019-05-22
  • 弹幕评论别降低了审美品位 2019-05-20
  • 人民网评:掌握核心技术,才不会被卡脖子 2019-05-05
  • 燕山谭客.blog的博客—强国博客—人民网 2019-05-04
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-05-04
  • 天津市环境保护突出问题边督边改公开信息 2019-04-29
  • 自作多情。先将台湾收回来再说也不迟啊。 2019-04-25
  • 【世界杯·望俄打卦】突尼斯VS英格兰 2019-04-25
  • 紫光阁中共中央国家机关工作委员会 2019-04-19
  • 学习贯彻落实十九大精神 2019-04-16
  • 全国啦啦操联赛临汾站开幕 2019-03-31
  • 讴歌新时代 讴歌新西藏——国家艺术基金2017年度传播交流推广项目民族音乐会《西藏春天》巡演启动 2019-03-31
  • 【访民情 惠民生 聚民心】吾其村“双膜瓜”为精准脱贫助力 2019-03-29
  • 努比亚Z17(尊享版全网通)参数 2019-03-29
  • 180| 711| 244| 234| 571| 819| 684| 860| 457| 463|