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

日志按everyday自动滚动,文件名的日期对应的是前一天的日志 #138

Closed
craterone opened this issue Feb 29, 2024 · 7 comments
Assignees
Labels
bug Something isn't working resolved

Comments

@craterone
Copy link

比如, xx.log.20240228, 包含的日志为 2024/02/27和 28号 12点 的日志,是不是 xx.log.20240228 应该包含 28号 0点-23:59点的?

@inhere inhere added the bug Something isn't working label Feb 29, 2024
@inhere
Copy link
Member

inhere commented Mar 24, 2024

@craterone 看我加了个测试,没有发现有问题呢?内容和文件差了一天吗?

写日志比较密集的话可能会出现几个边界数据问题的,这个是没法避免的。

@craterone
Copy link
Author

对,差了一天。日志数据量不大,使用的版本是 slog v0.5.5

h1 := handler.MustRotateFile(G_Config.LogFilePath, rotatefile.EveryDay,
			handler.WithLogLevels(slog.AllLevels),
			handler.WithBuffSize(0),
			handler.WithBackupNum(10),
			handler.WithMaxSize(1<<30), // 1GB
		)

		h1.SetFormatter(f)
		G_Logger = slog.NewWithHandlers(h1)

比如使用 slog 生成的日志 2024-03-24, 日志包含的大部分 2024-03-23的日志,和几行 2024-03-24凌晨的日志


我看一下其他库,感觉是逻辑不太一样,比如 2024-03-25 当天,其他库会写日志的时候,会直接写在 2024-03-25.log 文件; 而slog 会写在 xx.log 里,然后rename 成 2024-03-25.log 。我猜会不会是,这个rename的时间点如果迟了,就会迟一天了

@inhere
Copy link
Member

inhere commented Mar 25, 2024

@craterone 你看看这个日志文件的创建时间呢?

可以选择分割模式: rename 或者 create(会直接写 name-DATETIME.log)

@craterone
Copy link
Author

打不出来创建时间,只有最后修改时间

signal.log.20240324

  File: ‘signal.log.20240324’
  Size: 264960    	Blocks: 528        IO Block: 4096   regular file
Device: fd11h/64785d	Inode: 6689045     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-03-25 09:44:46.941377348 +0800
Modify: 2024-03-24 00:00:20.796371637 +0800
Change: 2024-03-24 00:00:20.798371631 +0800

可以选择分割模式: rename 或者 create(会直接写 name-DATETIME.log)

如何选择分割模式,我看了一下文档没找到

@inhere
Copy link
Member

inhere commented Mar 25, 2024

handler.WithRotateMode(rotatefile.ModeCreate), 设置分割模式。

确认机器上时区啥的没问题吗? 😄

@craterone
Copy link
Author

应该不会,这个机器还有其他项目在运行,用的别的日志库,都是正常的。 我先改分割模式试试吧。

@inhere
Copy link
Member

inhere commented Mar 26, 2024

找到问题了,使用的当前时间生成文件名称,如果刚好过了0点切割,生成的文件名称就错了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working resolved
Projects
None yet
Development

No branches or pull requests

2 participants