一般接入日志框架需要添加各种配置信息,也免不了引入相关类库。
如果写个Web Api,提供接口记日志,然后针对不同平台封装相应的类库,这样就不用在每个记录日志的项目加配置信息了。
打个比方:
1.有个Web Api 利用NLog.Mongo将日志记录到数据库,向外提供不同业务日志或者日志等级的接口,这都是业务实现,先不讨论。
2.根据web api提供的接口封装相应的方法提供给客户端,可以理解成工具类,针对web api的,比如日志等级,发邮件等等。异步post
3.项目引用封装类库,就可以调用相应方法记日志了
4.提供界面查看日志
之所以这么干就是想避免项目里配置节点或者添加日志配置文件,还是我这种处理方式把问题想复杂了?但我真的很讨厌配置,虽然有的并不麻烦,web api也可以进行分布式部署
问题是这么干有什么缺点吗,如果高并发采用异步post会有什么隐患吗。像mongodb的数据写入性能我觉得可以忽略。
欢迎讨论
相关问题
- 异步调用等待期间数据被篡改导致数据不一致问题!
- 一个绝大多数功能都是MVC页面的.Net Core 3.1网站的少量API怎么实现身份验证?
- WINDOWS下Nginx能挂.NET CORE WEB API程序吗
- 用.Net Code 3.1做网站,同时提供API,怎么做身份验证?
- 第一次搭建分布式Web项目 还望BigGod指点下江山
我认为你的想法是对的,当项目变多时,日志在每个项目中各自配置使得总体成本增加的较快,
于是便想着将这些重复的逻辑挪到一个地方,比如你说的api,这是符合srp的原则。
但是我认为 异步post到MongoDB ,这个地方异步的创建(或使用)可能会造成性能瓶颈。
因为我看过一篇文,在写日志的时候使用了同步语句,而且解释为什么没有使用异步,
他认为写日志的实现消耗应该小于异步创建的消耗。
总体我认为这是一个相对平衡的问题,就是 写日志消耗的时间代价要大于集中管理日志收获的价值。
我感觉这个问题结果还是要靠实践。
如果说的不对,欢迎指出。
如果你用 asp.net core ,就没这个烦恼了