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

python日志记录模块在crontab中运行时没有输出,python,linux,shell,crontab,centos6,Python,Linux,Shell,Crontab,Centos6,在CLI中运行时,我有一个可执行的.py文件工作正常。但是,在我编写了一个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)

在CLI中运行时,我有一个可执行的.py文件工作正常。但是,在我编写了一个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

(在脚本中添加一个
打印“hello console”
,您应该在
a.log
中看到)

根据评论编辑:


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

您检查了什么日志文件?是result.log还是a.log?根据您的代码,日志文件将是result.log,a.log应该是空的。它们都没有日志输出。在上面列出的代码中,它应该是“log”文件,我在
logging.basicConfig(filename=log\u file)
中配置了它,我的意思是“log”和“result.log”都没有输出,在a.log中有一些
print
语句输出,实际上我在a.py文件中有
print
语句,它显示在a.log中。但是
logging.error('error')
的输出没有像我在
logging.basicConfig
result.log
中配置的那样记录在日志(log\u文件)中。因为它的路径是由执行它的位置决定的,而不是脚本所在的位置。将
RESULT\u LOG\u FILE='RESULT.LOG'
更改为
RESULT\u LOG\u FILE='/root/RESULT.LOG'
,然后重试。