python日志记录模块在crontab中运行时没有输出
在CLI中运行时,我有一个可执行的.py文件工作正常。但是,在我编写了一个a.sh脚本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)
/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'
,然后重试。