首先单条日志体积可能很大,短则 1 Bytes,多则 1024TB
我看到有些方式是使用文件锁,但是文件是一个很慢的东西,锁又是一个很慢的东西,把这两个很慢的东西结合在一起使用,那速度不是很感人吗?
用多进程就是为了快,但是现在又要引入文件锁,那不是又变成蜗牛了。
业内有什么『多进程同时写一个日志文件,如何保证并发安全?』优雅高效的解决方案吗?
比如 python 的一个日志组件: concurrent-log-handler 用的就是文件锁
Uses file locking to ensure exclusive write access Note: file locking is advisory, not a hard lock against external processes
但是我还看到了 python 的一个日志库: loguru,使用了一个 enqueue 的东西
enqueue (bool, optional) – Whether the messages to be logged should first pass through a multiprocess-safe queue before reaching the sink. This is useful while logging to a file through multiple processes. This also has the advantage of making logging calls non-blocking.
这个 enqueue 对应的好像就是 IPC 中的消息队列? 就是每个进程都往队列里面写 log,而不是直接写 fs。那么这个写 fs 的谁来做?有了解 loguru 这个机制的吗?或者其他语言中有类似的东西吗?有了解的可以讲讲吗?