Python TimedRotatingFileHandler - 日志文件名中的PID - 最佳方法

时间:2013-10-26 16:07:59

标签: python logging python-2.7 error-logging

我希望启动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. 有更好的方法吗?
  4. 我理想的是,只保留1周的日志。可以使用TimeRotatingFileHander完成此操作而无需编写单独的清除/删除脚本吗?

1 个答案:

答案 0 :(得分:3)

  1. 是的,这将为每个唯一的日志路径维护7个备份或一周的日志。
  2. 旋转文件处理程序是对日志设置限制的正确方法。
  3. 正如我所说,旋转文件处理程序是正确的方法。我想你可以使用RotatingFileHandler,但是当日志达到一个大小时,而不是在特定时间,它会旋转,所以它不允许你指定一周的日志。
  4. 我对于如何保持给定流程的pid不断给出'流程将至少每天重启一次'而感到有点困惑。每个进程具有唯一日志路径的更强保证是明确地将其作为参数提供,例如, python script --log-file="$(pwd)/logs/LogFileProcX.log"