图1中我在老师你的logger.go 中增加了defer ,请问跟您在图2中的代码做有何区别, 如果不实现优雅关闭,我直接在图1中这样增加是否有问题。

来源:2-4 api接口如何设计

慕斯5059536

2022-09-07

图1:

http://img.mukewang.com/szimg/6318beb5090d02cf12140758.jpg

https://gitee.com/phper95/pkg/blob/master/logger/logger.go

图1中我在老师你的logger.go 中增加了defer ,请问跟您在图2中的代码做有何区别,

如果不实现优雅关闭,我直接在图1中这样增加是否有问题。

http://img.mukewang.com/szimg/6318bf6c09220bdf09920791.jpg

写回答

1回答

少林码僧

2022-09-08

执行sync的目的是让日志刷盘,这个日志库考虑到性能会合并一些写入降低应用服务io次数,所以写日志的过程是异步处理的,但也会确保段时间周期内会进行刷盘。所以为了避免日志丢失,如果我们的日志需要写入到文件而不是输出终端,还是需要在应用退出前执行sync来确保日志刷盘,所以还是得放到优雅关闭中实现。

0
0

海量数据高并发场景,构建Go+ES8企业级搜索微服务

全新 ES8 配合技术组件,实现高性能搜索

267 学习 · 54 问题

查看课程