荷兰代尔夫特理工大学和巴西圣保罗大学和著的论文《Contemporary Software Monitoring: A Systematic Literature Review》 对96篇发表在顶级同行评审会议和期刊上的论文进行了质量评估、分类和总结,以及对每个维度和分支下的研究现状、贡献和挑战进行了概述和比较,提出了当代日志框架(Contemporary Logging Framework)。
当代日志框架(Contemporary Logging Framework)
论文将软件监控的日志技术映射到四个维度和13个分支:
- 日志工程(Log Engineering):关注如何在软件系统中插入、维护和优化日志语句。它包括以下分支:
- 日志语句生成(Log Statement Generation):关注如何自动地或半自动地在代码中插入日志语句。
- 日志语句更新(Log Statement Update):关注如何自动地或半自动地更新已有的日志语句,以适应代码变化或需求变化。
- 日志语句优化(Log Statement Optimization):关注如何提高日志语句的质量和效率,例如减少冗余、增加信息量、降低开销等。
- 日志基础设施(Log Infrastructure):关注如何在软件系统中收集、存储和传输日志数据。它包括以下分支:
- 日志收集(Log Collection):关注如何从不同的源头(例如服务器、客户端、容器等)获取日志数据,并将其转换为统一的格式。
- 日志存储(Log Storage):关注如何在不同的介质(例如文件、数据库、云服务等)存储日志数据,并保证其可用性和安全性。
- 日志传输(Log Transmission):关注如何在不同的网络环境下传输日志数据,并保证其可靠性和实时性。
- 日志分析(Log Analysis):关注如何从日志数据中提取有用的信息和知识。它包括以下分支:
- 日志解析(Log Parsing):关注如何从非结构化或半结构化的日志数据中提取结构化的字段,例如时间戳、级别、消息等。
- 日志聚类(Log Clustering):关注如何将相似或相关的日志条目分组在一起,以便于进一步的分析或可视化。
- 日志异常检测(Log Anomaly Detection):关注如何从日志数据中识别出异常或错误的情况,例如系统崩溃、性能下降、配置错误等。
- 日志故障诊断(Log Fault Diagnosis):关注如何从日志数据中定位和解释故障的原因,例如代码缺陷、资源竞争、依赖问题等。
- 日志行为建模(Log Behavior Modeling):关注如何从日志数据中抽象出系统或用户的行为模式,例如状态机、工作流、用户画像等。
- 跨领域应用(Cross-Domain Applications):关注如何将软件监控的日志技术应用到其他领域或场景中。它包括以下分支:
- 软件测试与调试(Software Testing and Debugging):关注如何利用日志数据来辅助软件测试与调试过程,例如生成测试用例、检测回归错误、重放执行轨迹等。
- 软件安全与隐私(Software Security and Privacy):关注如何利用或保护日志数据来提高软件系统的安全性与隐私性,例如检测恶意攻击