mangosd 之 Log
在stdlog.h中,连写个日志这样简单的事情也被抽象了一下,stdlog提供一个抽象类,定义了一个
error纯虚函数,如果你想让日志写到stdout就继承这个类,并实现自己的error,如果要写到也文件,同样
实现一个写文件的error函数就可以了。这样确实也可以带来方便,减少修改,比如类A用到了log功能,它
只需要持有积累stdlog的句柄就可以了,不用关心具体调用了那一个子类,如果你想log到文件,就传一个
StdFileLog的句柄给A就大功告成了,甚至可以动态插拔。
而log.h中,定义了很多写日志的函数,因为mangosd中有多种日志文件(如ralog,gmlog,dblog
等),每种文件都有自己的log函数,而不同的日志等级也有不同的函数;感觉是不是分得太细了?导致很
多函数里面的代码都是很相似的,甚至只是一个日志登记和日志颜色的区别。其实可以写一个函数,传入等
级,日志文件类型等,在这个文件里面做处理就好了,如果需要,也可以为具体的日志定义其函数,这样暴
露给用户的就只有一个wirtelog接口,而不会让用户在大量接口下面茫然失措,不知道该调用哪个好。但是
这样的话writelog肯定会比较大,而且功能也不一定单一,而维护的工作就都集中在对其的修改之上。相比
而言,mangos的方法在维护起来还是比较清晰的,要添要改还是很容易。说到底还是一个取舍和折中的问题
。
阅读(959) | 评论(0) | 转发(0) |