feat: output log to file and update them periodically #145
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
自查 PR 结构
PR 标题符合这个格式: <type>(optional scope): <description>
此 PR 标题的描述以用户为导向,足够清晰,其他人可以理解。
我已经对所有 commit 提供了签名(GPG 密钥签名、SSH 密钥签名)
这个 PR 属于强制变更/破坏性更改
这个 PR 的类型是什么?
feat: 一个新的特性
这个 PR 做了什么 / 我们为什么需要这个 PR?
将原有的日志模块进行重构, 将日志输出到文件当中, 并且定期更新输出位置
(可选)这个 PR 解决了哪个/些 issue?
对 Reviewer 预留的一些提醒
我把 klog 改成自定义 logger 是要控制 loggerObj 的所有权, 这样在更新日志输出文件的时候原来的 logger 可以被释放
包括其他 redis 或 mysql 甚至 es 的模块的与 logger 相关功能都被我改了, 现在我们拥有的是一个完全可控的, 清晰的了解他整个生命周期的 loggerObj
如果我们不更改output.go中的klog的话,最终输出也是一样的,毕竟他们引用一个底层 logger, 但这会增加未知度. 而且很难保证不发生数据竞争的问题.
至于为什么一直在强调数据竞争: 我让现在的日志重定向输出到文件, 并且会以天为单位更新输出的目标, 也就是 logger 的 output 是在变化的, 我要确保的就是这个变化的途中没有新的调用来让 logger 输出日志, 否则就会出现数据竞争, 因为一边在读一边在写