我使用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"]
}
}
答案 0 :(得分:2)
在Cron下运行东西可能有点棘手:
它从crontab用户的$HOME
目录开始。如果那里有 errors.log 文件,则可能无效。检查权限。
我之前从未见过ext://sys.stdout
格式。 Cron将stdout路由到电子邮件,这往往不起作用。
我建议将所有邮件路由到/tmp/myscript.log
- 这样更容易检查。