python 日志记录模块在 crontab 中运行时没有输出

标签 python linux shell cron centos6

我有一个可执行文件 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 中,日志事件不会输出到控制台,只会输出到日志文件,因此没有“输出”重定向到 a.log.

(在您的脚本中添加一个print 'hello console',您应该会在a.log 中看到它。)

根据评论编辑:

result.log 可能不是你想的那样。因为它的路径是由它执行的位置决定的,而不是脚本所在的位置。将 RESULT_LOG_FILE = 'result.log' 更改为 RESULT_LOG_FILE = '/root/result.log'

关于python 日志记录模块在 crontab 中运行时没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34192289/

相关文章:

python - 矩阵的每一行和每一列中的最小值 - Python

python - 使用 urllib 将获取的数据以特定的结构化格式保存在文件中

c++ - undefined symbol : __gnat_rcheck_CE_Invalid_Data when linking ADA with C++

shell - 如何在 Makefile 中定义子例程

python - ValueError : Cannot feed value of shape (64, ) 对于张量 'x:0' ,其形状为 '(?, 100, 100, 3)'

python - 在Linux上使用Python模块编译GEOS 3.6.2

linux复制并粘贴两个最后增量文件名

shell - 在 shell 中使用管道执行变量

linux - 如何在 Bash/Ubuntu 12.04 中正确编写这个算术表达式?

Python:关于 pandas 列的多个条件问题