为什么cron正在捕获Python';是否将事件记录为错误?

为什么cron正在捕获Python';是否将事件记录为错误?,python,logging,cron,Python,Logging,Cron,我有一个非常简单的测试设置,包括cron和一个使用日志记录模块的Python脚本,当cron遇到日志记录事件时,它的行为异常 克朗塔布 ~/test.py ~/test.log cron运行后,日志将填充以下两条消息: Properly printed, to file Still running, though cron错误电子邮件 此外,在cron运行后,我会收到一个通知,通知我有新邮件: From tomcat6@local Thu May 23 16:35:01 2013 Date:

我有一个非常简单的测试设置,包括cron和一个使用
日志记录
模块的Python脚本,当cron遇到日志记录事件时,它的行为异常

克朗塔布 ~/test.py ~/test.log cron运行后,日志将填充以下两条消息:

Properly printed, to file
Still running, though
cron错误电子邮件 此外,在cron运行后,我会收到一个通知,通知我有新邮件:

From tomcat6@local  Thu May 23 16:35:01 2013
Date: Thu, 23 May 2013 16:35:01 -0700
From: root@local (Cron Daemon)
To: tomcat6@local
Subject: Cron <tomcat6@local> ~/test.py >> ~/test.log
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/usr/local/tomcat6>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=tomcat6>
X-Cron-Env: <USER=tomcat6>

DEBUG:root:Does not get printed, get's e-mailed as an error
来自tomcat6@local2013年5月23日星期四16:35:01
日期:2013年5月23日星期四16:35:01-0700
发件人:root@local(Cron守护进程)
致:tomcat6@local
主题:Cron~/test.py>>~/test.log
内容类型:文本/纯文本;字符集=UTF-8
自动提交:自动生成
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
调试:root:未打印,get的电子邮件错误
看起来这不是一个明确的错误,否则最后的“仍在运行…”消息将不会打印到
~/test.log
,对吗


为什么cron和或logging会这样做,是否有解决办法?

basicConfig()
设置的默认配置将消息记录到
stderr
,cron将任何输出解释为可发送电子邮件的
stderr
文件句柄;毕竟,你不是在重定向它

见:

通过使用默认的
格式化程序创建
StreamHandler
,并将其添加到根记录器,对日志记录系统进行基本配置

如果指定了stream,实例将使用它记录输出;否则,将使用
sys.stderr

解决方法是不设置流处理程序,或选择其他流,或选择要登录的文件名:

logging.basicConfig(level=logging.DEBUG, filename='/some/file/to/log/to')

通过登录到
stdout
可以将日志信息写入与
print()
相同的输出流

另一个解决方法是将
stderr
重定向到
stdout

* * * * * ~/test.py >> ~/test.log 2>&1

非常感谢你。2&>1对我不起作用,但2>&1起作用。@AkalankaWeerasooriya:啊,那确实是个打字错误,谢谢你指出这一点!
logging.basicConfig(level=logging.DEBUG, filename='/some/file/to/log/to')
logging.basicConfig(level=logging.DEBUG, stream=sys.stdout)
* * * * * ~/test.py >> ~/test.log 2>&1