使用crontab执行脚本时登录python
我使用python的日志模块来记录脚本中发生的事情。如果我手动运行脚本,它会工作得很好,但是如果我通过crontab运行脚本,则不会记录任何内容。因此,可能缺少一些设置,但我不知道在哪里可以找到要更改的设置 作为参考,这是我用于日志记录的设置使用crontab执行脚本时登录python,python,logging,cron,crontab,Python,Logging,Cron,Crontab,我使用python的日志模块来记录脚本中发生的事情。如果我手动运行脚本,它会工作得很好,但是如果我通过crontab运行脚本,则不会记录任何内容。因此,可能缺少一些设置,但我不知道在哪里可以找到要更改的设置 作为参考,这是我用于日志记录的设置 { "version": 1, "disable_existing_loggers": false, "formatters": { "simple": { "format": "%(asct
{
"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"]
}
}
在Cron下运行东西可能有点棘手:
$HOME
目录开始。如果那里有errors.log文件,它可能无法工作。检查权限ext://sys.stdout
之前的格式。Cron将stdout路由到电子邮件,这往往不起作用我建议将所有消息路由到
/tmp/myscript.log
——这样更容易检查。那里没有errors.log或info.log。$HOME的权限是drwx------这意味着当前用户有权在那里做事情。Cron需要什么样的权限?从何处路由所有邮件?在crontab中,Cron默认将/dev/stdout路由到电子邮件,但电子邮件通常没有正确设置,所以Cron会感到困惑。1) 将日志显式写入文件。另外:2)执行tail-f/var/log/syslog
查看Cron在做什么。这很微妙:)