Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: output logs to file and update them periodically #143

Closed
wants to merge 2 commits into from

Conversation

mutezebra
Copy link
Member

自查 PR 结构

  • PR 标题符合这个格式: <type>(optional scope): <description>

  • 此 PR 标题的描述以用户为导向,足够清晰,其他人可以理解。

  • 我已经对所有 commit 提供了签名(GPG 密钥签名、SSH 密钥签名)

  • 这个 PR 属于强制变更/破坏性更改

如果是,请在 PR 标题中添加 BREAKING CHANGE 前缀,并在 PR 描述中详细说明。

这个 PR 的类型是什么?

feat: 一个新的特性

这个 PR 做了什么 / 我们为什么需要这个 PR?

将原有的日志模块进行重构, 将日志输出到文件当中, 并且定期更新输出位置

(可选)这个 PR 解决了哪个/些 issue?

对 Reviewer 预留的一些提醒

@mutezebra mutezebra requested review from ozline, jiuxia211 and a team as code owners December 17, 2024 14:07
@mutezebra
Copy link
Member Author

我把 klog 改成自定义 logger 是要控制 loggerObj 的所有权, 这样在更新日志输出文件的时候原来的 logger 可以被释放

包括其他 redis 或 mysql 甚至 es 的模块的与 logger 相关功能都被我改了, 现在我们拥有的是一个完全可控的, 清晰的了解他整个生命周期的 loggerObj

如果我们不更改output.go中的klog的话,最终输出也是一样的,毕竟他们引用一个底层 logger, 但这会增加未知度. 而且很难保证不发生数据竞争的问题.

至于为什么一直在强调数据竞争: 我让现在的日志重定向输出到文件, 并且会以天为单位更新输出的目标, 也就是 logger 的 output 是在变化的, 我要确保的就是这个变化的途中没有新的调用来让 logger 输出日志, 否则就会出现数据竞争, 因为一边在读一边在写

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant