一、为什么打印日志
1.1、调试和排查问题:通过记录日志,可以在程序运行时打印关键变量、逻辑和流程,方便我们进行调试和排查问题。
1.2、监控和告警:通过对日志进行监控和分析,可以及时发现系统的异常行为和潜在问题。通过设置合适的告警规则,可以在系统发生异常或达到预警条件时及时通知开发,以便采取相应的措施。
1.3、用户行为审计:记录和采集用户的操作行为以及事件可以用于审计和安全监控。通过分析用户行为日志,可以了解用户的操作习惯、需求和偏好。
1.4、问题原因分析(甩锅):在关键地方记录日志。方便和其它业务方解决问题的时候,获取问题的根源,及时甩锅。
二、什么时候打印日志
2.1、系统初始化:在系统或服务的启动过程中,记录一些关键配置参数和启动完成状态,以便于排查问题和了解系统的运行情况。通常使用 INFO 级别记录。
2.2、异常情况:当系统遇到编程语言的异常或业务流程不符合预期时,记录日志以便于追踪和调试。根据异常的严重程度,可以使用 WARN 或 ERROR 级别记录。
2.3、业务流程的关键点:对于业务流程中的关键点或核心角色的动作,建议记录日志以监控系统的运行情况。比如用户从登录到下单的整个流程,微服务之间的交互,核心数据表的增删改等。通常使用 INFO 级别记录。
2.4、第三方服务远程调用:在微服务架构中,第三方服务的可靠性是一个重要的问题。建议记录第三方服务的请求和响应参数,以便于排查问题和定位故障。通常使用 INFO 级别记录。
需要注意的是,日志记录的频率和打印量应根据具体情况进行评估和调整,避免日志过于频繁或过于庞大。
三、ELK(Elasticsearch, Logstash, Kibana)集中管理可视化日志
直接通过日志文件查询日志可能会比较繁琐,效率比较低,可以使用一些日志聚合工具来收集和管理日志。例如使用使用ELK Stack(Elasticsearch, Logstash, Kibana)来集中管理和可视化日志。
ELK收集日志:
1、Elasticsearch:用于存储和索引日志数据,提供高效的搜索和分析功能。
2、Logstash:用于收集、过滤和转发日志数据,可以从多个来源(如文件、网络等)收集日志,并将其发送到Elasticsearch进行存储和索引。
3、Kibana:用于可视化和分析日志数据,提供灵活的查询和可视化工具,可以创建仪表板、图表和报表来展示日志数据的统计和趋势。
四、打印日志最佳实践
4.1、详细和准确:日志应该记录足够详细的信息,包括时间、触发事件、相关参数和上下文等,方便我们快速理解时间的发生和上下文。
4.2、可读性强:日志应该使用易于阅读和理解的格式,日志信息能够被其它开发人员快速理解,而不需要费力解析复杂的日志内容。
4.3、可配置性:日志系统应该具备可配置的选项,以便开发人员可以根据需要调整日志级别、输出目标和格式等。
4.4、性能高效:日志记录应该对系统性能的影响尽可能小,避免对应用程序的正常运行造成明显的延迟。
4.5、安全性:日志应该保护敏感信息的安全性,避免将敏感数据记录在日志中,以防止信息泄露的风险。