在使用crontab执行脚本时的Python日志记录
我在用Python的日志模块来记录脚本中发生的事情。手动运行脚本的时候,一切都正常,但如果通过crontab运行,就什么都没有记录下来。所以可能是某个设置没有调整好,但我不知道该去哪里找出需要更改的设置。
以下是我用来设置日志的内容。
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"simple": {
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "DEBUG",
"formatter": "simple",
"stream": "ext://sys.stdout"
},
"info_file_handler": {
"class": "logging.handlers.RotatingFileHandler",
"level": "INFO",
"formatter": "simple",
"filename": "info.log",
"maxBytes": "10485760",
"backupCount": "5",
"encoding": "utf8"
},
"error_file_handler": {
"class": "logging.handlers.RotatingFileHandler",
"level": "ERROR",
"formatter": "simple",
"filename": "errors.log",
"maxBytes": "10485760",
"backupCount": "5",
"encoding": "utf8"
}
},
"loggers": {
"my_module": {
"level": "ERROR",
"handlers": ["console"],
"propagate": "no"
}
},
"root": {
"level": "INFO",
"handlers": ["console", "info_file_handler", "error_file_handler"]
}
}
1 个回答
2
在使用Cron来定时执行任务时,有些地方可能会让人感到困惑:
它会在crontab用户的
$HOME
目录下启动。如果那里有一个errors.log文件,可能会导致任务无法正常运行。你需要检查一下文件的权限。我从来没见过
ext://sys.stdout
这种格式。Cron会把标准输出(也就是程序运行时的输出信息)发送到邮件里,但这通常不太好用。
我建议把所有信息都记录到/tmp/myscript.log
这个文件里,这样检查起来更方便。