【问题标题】:Python TimedRotatingFileHandler - PID in Log File name - Best ApproachPython TimedRotatingFileHandler - 日志文件名中的 PID - 最佳方法
【发布时间】:2025-11-21 21:50:01
【问题描述】:

我希望启动 Python 程序的多个实例(进程),并且我希望每个实例都写入自己的日志文件。

进程将至少每天重新启动一次。

所以我得到了以下代码。

logHandler = TimedRotatingFileHandler(os.path.join(os.path.dirname(sys.argv[0]),'logs/LogFile_'+str(os.getpid())+'.log'),when="midnight", backupCount=7)
  1. 此代码是否会为每个 PID 维护 7 个备份?
  2. 有没有更好的方法来拆分它,这样我的磁盘就不会被无用的东西填满 文件?假设 PID 在几个月内对于进程来说可能是唯一的。
  3. 有没有更好的方法来做到这一点?

我最理想的情况是维护仅与 1 周有关的日志。这可以使用 TimeRotatingFileHander 来完成,而无需编写单独的 Purge/Delete 脚本吗?

【问题讨论】:

  • 嘿!我的回答真的解决了你的问题吗?如果我错过了标记,请告诉我——不接受就像一根松散的线:)

标签: python logging python-2.7 error-logging


【解决方案1】:
  1. 是的,这将为每个唯一的日志路径维护 7 个备份,或一周的日志。
  2. 轮换文件处理程序是限制日志的正确方法。
  3. 正如我所说,旋转文件处理程序是正确的方法。我想您可以使用 RotatingFileHandler,但它会在日志达到一定大小时轮换,而不是在特定时间,因此它不允许您指定一周的日志。

我有点困惑,你如何保持给定进程的 pid 不变,因为“进程将至少每天重新启动一次”。更强有力的保证每个进程都有一个唯一的日志路径是明确地提供它作为一个参数,例如python script --log-file="$(pwd)/logs/LogFileProcX.log"

【讨论】:

    最近更新 更多