我正在尝试设置一个记录器,它将记录到控制台(我想这样做是因为我正在使用Heroku和Papertrails(Heroku的日志插件),并且写入控制台的内容将显示在Papertrails中,使其可过滤和具有所有漂亮的Papertrail功能。)
在设置中,我首先尝试了以下内容:
LOGGING = {
'handlers' = {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'mysite.log',
'formatter': 'verbose'
},
'console':{
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
(...)
'loggers'={
(...)
'page_processors': {
'handlers': ['console','file'],
'level': 'DEBUG',
}
}
(...)
}
根据Django的日志页面(对于那些不使用Mezzanine的人来说,page_processors是Mezzanine在打开页面时运行的内容;您可以将它们视为类似于Django的视图,但它们仅处理上下文,而不是渲染)。
在page_processors.py中,我有
import logging
logger = logging.getLogger(__name__)
@process_for(MyPage):
def myfunc(request, Page):
logger.info('page_processor logging test')
print 'my page_processor print'
(...)
当我刷新页面时,我看不到记录器,但我可以看到打印和文件日志:
[02/Mar/2014 23:07:10] INFO [myApp.page_processors:13] page_progessor logging test
所以我知道逻辑是有效的。在搜索了一下之后,我发现this和this page正好解决了这个问题。他说,默认情况下logging.StreamHandler会记录到STDERR。如果我们想要记录到STDOUT,应该在logging.StreamHandler构造函数中添加关键字参数'stream',并将处理程序配置为:
'handlers':{
(...)
'console':{
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'stream': sys.stdout
},
}
原来这还是不行,我没有收到任何错误提示,仍然能看到打印和文件日志,只是控制台记录器没有了。
发生了什么?
编辑: 我尝试了this,但没有任何改变。