python 日志记录模块在 crontab 运行 时没有输出
python logging module no output while running in crontab
我有一个可执行 a.py 文件在 CLI 中 运行 时工作正常。但是在我编写了一个 a.sh 脚本 /root/a.py >> /root/a.log
并启动了一个 crontab * * * * * /bin/sh /root/a.sh
之后,它工作正常,除了在日志文件中没有输出。
a.py 的日志记录部分配置如下:
DATE_FORMAT = '%a, %d %b %Y %H:%M:%S'
LOG_FILE = 'log'
RESULT_LOG_FILE = 'result.log'
LOG_FORMAT = '[%(asctime)s] [%(filename)s:%(lineno)d] [%(levelname)s] [%(threadName)s] [%(process)d] %(message)s'
logging.basicConfig(format=LOG_FORMAT, datefmt=DATE_FORMAT, level=logging.INFO, filename=LOG_FILE)
logging.error('ERROR')
我尝试在 a.sh 中的 /root/a.py
前面添加 /usr/local/bin/python
但没有成功。我不知道为什么会这样。
命令 /root/a.py >> /root/a.log
将 输出重定向 到文件 /root/a.log
中。 >>
= 追加,而 >
会覆盖。
您的脚本正在记录到 result.log
,而不是 a.log
。除非你有一个 print
声明,否则 a.log
.
不会有任何内容
在您的 logging.basicConfig
中,日志事件不会输出到控制台,只会输出到日志文件,因此没有 "output" 重定向到 a.log
。
(在您的脚本中添加一个 print 'hello console'
,您应该会在 a.log
中看到它。)
根据评论编辑:
result.log
可能不是你想的那样。因为它的路径是由它执行的位置决定的,而不是脚本所在的位置。将 RESULT_LOG_FILE = 'result.log'
更改为 RESULT_LOG_FILE = '/root/result.log'
我有一个可执行 a.py 文件在 CLI 中 运行 时工作正常。但是在我编写了一个 a.sh 脚本 /root/a.py >> /root/a.log
并启动了一个 crontab * * * * * /bin/sh /root/a.sh
之后,它工作正常,除了在日志文件中没有输出。
a.py 的日志记录部分配置如下:
DATE_FORMAT = '%a, %d %b %Y %H:%M:%S'
LOG_FILE = 'log'
RESULT_LOG_FILE = 'result.log'
LOG_FORMAT = '[%(asctime)s] [%(filename)s:%(lineno)d] [%(levelname)s] [%(threadName)s] [%(process)d] %(message)s'
logging.basicConfig(format=LOG_FORMAT, datefmt=DATE_FORMAT, level=logging.INFO, filename=LOG_FILE)
logging.error('ERROR')
我尝试在 a.sh 中的 /root/a.py
前面添加 /usr/local/bin/python
但没有成功。我不知道为什么会这样。
命令 /root/a.py >> /root/a.log
将 输出重定向 到文件 /root/a.log
中。 >>
= 追加,而 >
会覆盖。
您的脚本正在记录到 result.log
,而不是 a.log
。除非你有一个 print
声明,否则 a.log
.
在您的 logging.basicConfig
中,日志事件不会输出到控制台,只会输出到日志文件,因此没有 "output" 重定向到 a.log
。
(在您的脚本中添加一个 print 'hello console'
,您应该会在 a.log
中看到它。)
根据评论编辑:
result.log
可能不是你想的那样。因为它的路径是由它执行的位置决定的,而不是脚本所在的位置。将 RESULT_LOG_FILE = 'result.log'
更改为 RESULT_LOG_FILE = '/root/result.log'