OpenAtomFoundation / TobudOS

开放原子开源基金会孵化的物联网操作系统,捐赠前为腾讯物联网终端操作系统TencentOS Tiny
https://cloud.tencent.com/product/tos-tiny
5.97k stars 1.61k forks source link

是否有关于TencentOS-tiny较为完善的Log系统设计需求 #346

Closed Yangyuanxin closed 2 years ago

Yangyuanxin commented 2 years ago

目前在TencentOS-tiny主代码分支中只看到内核里有一小部分Log系统的设计,而且也不是特别完善。其它地方暂时没有看到关于Log系统的组件设计,而且打印的日志大多数采用的是printf。这样的话一旦出现BUG,就很难区分哪些是重要的信息,哪些是不重要的信息,调试定位问题困难,出了问题还很难复现。因此,我认为Log系统至少需要包含以下几个东西: 1、是否启动Log系统组件 2、需要一个Log等级的区分,例如ERROR、WARN、DEBUG、INFO等等。 3、Log信息输出最好是支持配置,例如能够通过用户终端、某个硬件接口(串口、USB等),预留接口给用户自己去实现对应平台的配置。 4、Log信息输出还应该预留保存文件的接口,支持配置。这里有几个问题需要考虑: 4.1、Log文件的路径(是存在外部存储设备还是哪里。例如SD卡,U盘等存储介质。) 4.2、文件的最大体积 4.3、一般Log日志文件都使用带有日期、时间、版本号来进行文件前缀命名的需求,但是一些消费级的嵌入式产品可能会为了节省成本会去掉RTC模块,这样日志文件命名使用带有日期、时间作为文件前缀命名的需求就没有太大的意义,因此这里考虑是否可以提供配置选项,来支持不同应用场景的需求。 4.4、Log文件的卷绕处理。 4.4.1、假设我们以序号递增的方式来写入文件,那么当第一个文件写入的大小超过用户设定的尺寸时,直接log_1.txt、log_2.txt、log_3.txt....一直往后递增就好了,如果超过用户设置的某个序号,则自动删除序号最小的那一个。这样能确保目录下的文件不会越来越多,而且也不会超过文件系统支持存放的最大文件个数导致出现致命性的问题,当然这个功能也是可以支持配置的,因为有些客户他们就希望文件不要被删除,但是至少需要有配置文件个数的最大上限项。 4.4.2、卷绕可能还有另外一种体现,比如文件序号递增到9999,当客户不希望序号递增到10000时,可以直接把目录范围下的9999-文件个数的序号文件全部替换为log_1.txt、log_2.txt、log_3.txt...,后续写入的文件继续以最大序号往后递增。 5、log系统的配置,输出操作应当是线程安全的。

综上所述,如果能够完善Log系统组件的设计,可以将其单独提到components下,这样其它组件都可以统一使用Log系统组件来实现信息输出。

Supowang1989 commented 2 years ago

确实有这类需求,欢迎大家协同共建