Django + heroku:显示django日志,应用日志不会出现

时间:2016-09-14 18:12:44

标签: python django logging heroku

我阅读了所有StackOverflow答案,关于这个主题的所有博客文章,并尝试了两次,但我仍然无法让我的Django应用程序的日志消息出现在heroku日志中(Django&# 39;自己的消息确实出现了。)

任何人都可以粘贴一个在heroku中运行的完整LOGGING配置吗?

# views.py
import logging
logger = logging.getLogger(__name__)

def a_view(request):
    # ...
    logger.exception('error finding file')
    # ...

使用:

# settings.py
LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    'formatters': {
        'simple': {
            'format': '%(levelname)s [%(name)s:%(lineno)s] %(message)s'
        },
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'simple',
            "stream": sys.stdout
        },
    },
    "loggers": {
        "root": {
            "handlers": ["console"],
        },
        # last try :(
        "myapp": {
            "handlers": ["console"],
        },
        "django": {
            "handlers": ["console"],
        }
    }
}

1 个答案:

答案 0 :(得分:2)

这是一个适合我的配置(OP):

LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    'formatters': {
        'simple': {
            'format': '%(levelname)s [%(name)s:%(lineno)s] %(message)s'
        },
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'simple',
            "stream": sys.stdout
        },
    },
    "loggers": {
        "": {
            "handlers": ["console"],
            'level': 'INFO',
        },
        "django": {
            "handlers": ["console"],
            'level': 'INFO',
        }
    }
}

产生差异的修改是改变所有记录器的级别,但在此之前我将"root"更改为"",因此也可能需要这样做。

编辑:删除" myapp"记录器由""捕获记录器,解决了我的双重记录问题。