使用场景分析
日志组件是一种比较成熟的组件了,但是实际上会有很多场景想自己实现日志:
- 在底层组件中,不想要其他依赖,主要考虑的是日志组件版本冲突问题
- 非常简单的小项目,专业的日志组件过于复杂
- 有很多测试场景,不想用大的日志框架
- 其他变态场景
功能简单设计
笔者也是在实际生产中遇到了类似场景。
故简单设计了轻量级日志组件所需要具备功能:
- 日志组件需要非常简单,可以独立使用,也可以集成到项目中使用
- 日志组件需要有非常高的写入性能,但是不能占用太多内存和io
- 日志组件最好能实现自管理,不需要考虑历史数据清理等
- 日志需要接口化,方便切换不同的日志实现
- 单个日志文件可以设置大小
- 日志组件支持动态开关
- 日志组件支持自动降级,当异常出现时不影响主程序
- 日志支持归档功能,当日志文件过多时,自动压缩归档,当然归档需要设置大小限制
简单实现
根据以上功能要求,我简单实现了简易的C#版本日志组件:
有需要的同学可以直接使用,如果是其他语言,可以自行参考实现,源码非常简单!
当然懒人读者真需要其他语言版本,可以issue我