使用crontab执行脚本时登录python

时间:2014-06-14 16:30:33

标签: python logging cron crontab

我使用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 个答案:

答案 0 :(得分:2)

在Cron下运行东西可能有点棘手:

  1. 它从crontab用户的$HOME目录开始。如果那里有 errors.log 文件,则可能无效。检查权限。

  2. 我之前从未见过ext://sys.stdout格式。 Cron将stdout路由到电子邮件,这往往不起作用。

  3. 我建议将所有邮件路由到/tmp/myscript.log - 这样更容易检查。