关于通过web api记录日志的问题讨论

2019-01-02 22:42发布

一般接入日志框架需要添加各种配置信息,也免不了引入相关类库。
如果写个Web Api,提供接口记日志,然后针对不同平台封装相应的类库,这样就不用在每个记录日志的项目加配置信息了。
打个比方:
1.有个Web Api 利用NLog.Mongo将日志记录到数据库,向外提供不同业务日志或者日志等级的接口,这都是业务实现,先不讨论。
2.根据web api提供的接口封装相应的方法提供给客户端,可以理解成工具类,针对web api的,比如日志等级,发邮件等等。异步post
3.项目引用封装类库,就可以调用相应方法记日志了
4.提供界面查看日志

之所以这么干就是想避免项目里配置节点或者添加日志配置文件,还是我这种处理方式把问题想复杂了?但我真的很讨厌配置,虽然有的并不麻烦,web api也可以进行分布式部署

问题是这么干有什么缺点吗,如果高并发采用异步post会有什么隐患吗。像mongodb的数据写入性能我觉得可以忽略。
欢迎讨论

2条回答
神经病院院长
2楼-- · 2019-01-02 22:47

我认为你的想法是对的,当项目变多时,日志在每个项目中各自配置使得总体成本增加的较快,
于是便想着将这些重复的逻辑挪到一个地方,比如你说的api,这是符合srp的原则。

但是我认为 异步post到MongoDB ,这个地方异步的创建(或使用)可能会造成性能瓶颈。
因为我看过一篇文,在写日志的时候使用了同步语句,而且解释为什么没有使用异步,
他认为写日志的实现消耗应该小于异步创建的消耗。

总体我认为这是一个相对平衡的问题,就是 写日志消耗的时间代价要大于集中管理日志收获的价值。
我感觉这个问题结果还是要靠实践。

如果说的不对,欢迎指出。

查看更多
Fickle 薄情
3楼-- · 2019-01-02 22:49

如果你用 asp.net core ,就没这个烦恼了

查看更多
登录 后发表回答