Python 记录器调试:找不到记录器“__main__”的处理程序

Python logger debuging: No handlers could be found for logger "__main__"

我有一个 plivo 电话会议应用程序。我可以在本地 运行 应用程序正常运行,但是当我在 heroku 上 运行 时,我收到以下错误,这会终止我的应用程序: 2015-02-12T05:36:08.173658+00:00 app[web.1]: No handlers could be found for logger "__main__" 2015-02-12T05:36:08.173695+00:00 app[web.1]: Pilvo error: CombinedMultiDict([ImmutableMultiDict([]), ImmutableMultiDict([('From', u'zzzphone'), ('Direction', u'inbound'), ('BillRate', u'0.00850'), ('CallerName', u'+yyyphone'), ('To', u'xxxphone'), ('CallStatus', u'ringing'), ('CallUUID', u'0aaf7442-b279-11e4-af9d-ff55a7d29b8a'), ('Event', u'StartApp')])]) ,

这是我的应用程序中包含 'logger' 模块的所有代码。我尝试注释掉代码以确定问题所在。该应用程序应该记录电话会议,但是当我拨打 python 应用程序时,我什至没有到达主菜单来输入数字然后输入会议实例,所以错误一定是在这个地方固有的?

    logging.config.dictConfig({
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'recording': {
            'format': '[%(asctime)s]: %(message)s',
        },
        'verbose': {
            'format': '%(levelname)s::%(asctime)s::%(module)s -- %(message)s',
        }
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'stream': sys.stdout,
            'formatter': 'verbose'
        },
        'recordings_file': {
            'level': 'INFO',
            'filename': 'recordings.log',
            'class': 'logging.FileHandler',
            'formatter': 'recording'
        },
        'logfile': {
            'level': 'DEBUG',
            'filename': 'debug.log',
            'class': 'logging.FileHandler',
            'formatter': 'verbose'
        }
    },

    'loggers': {
        'recordings': {
            'handlers': ['recordings_file'],
            'level': 'INFO',
            'propagate': True,
        },
        'root': {
            'handlers': ['logfile', 'console'],
            'level': 'INFO',
            'propagate': True
        },
    }
})
"""

logger = logging.getLogger(__name__)
recordings = logging.getLogger('recordings')

@app.route('/response/main_menu', methods=['GET', 'POST'])
def main_menu():
    logger.debug('New call')
    logger.debug('--')
    response = plivoxml.Response()

还有这里:

    app.route('/response/error_handler/', methods=['POST'])
def error_handler():
    logger.error('Pilvo error: %s , %s' % (request.values, request.data))
    print 'Pilvo error: %s , %s' % (request.values, request.data)

    response = plivoxml.Response()
    response.addRedirect(url_for('ivr', _external=True))

    return Response(str(response), mimetype='text/xml')

你在用烧瓶吗?

如果是这样,请尝试从应用调用记录器:

app.logger.error('Pilvo error...')