【问题标题】:Django loggers - Correct output to stdout and stderrDjango loggers - 正确输出到 stdout 和 stderr
【发布时间】:2014-07-29 19:52:41
【问题描述】:

似乎 Django 记录器默认将 stderr 用于 所有 记录级别。

例如,当日志记录设置为:

'version': 1,
        'disable_existing_loggers': True,
        'formatters': {
            'default': {
                'format': "%(asctime)s:%(name)s:%(levelname)s:%(message)s"
            },
        },
        'handlers': {
            'console': {
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',
                'formatter': 'default',

            }
        },
        'loggers': {
            '': {
                'handlers': ['console'],
                'level': 'DEBUG',
                'propagate': True,
            },
            'django': {
                'handlers': ['console'],
                'level': 'WARNING',
                'propagate': False,
            },
            'appname': {
                'handlers': ['console'],
                'level': 'WARNING',
                'propagate': False,
            },

当我将处理程序更改为:

 'handlers': {
            'console': {
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',
                'formatter': 'default',
                'stream': sys.stdout  #Notice the change
            }
        },

然后所有输出都在标准输出中。

但我需要正确行为:记录信息、调试、警告stdout(警告可以是任何一种方式,并不在意)和异常、错误,对stderr很重要

我在这里缺少什么? (一些明显的设置?每个人都知道吗?)感谢您的帮助!

【问题讨论】:

    标签: python django logging


    【解决方案1】:

    尝试定义 2 个处理程序,例如 consoleoutconsoleerr,每个都使用正确的流。

    loggers 部分中的每个条目使用正确的处理程序。

    【讨论】:

    • 感谢工作!似乎我需要添加两个控制台,每个控制台都会根据调试级别调用
    • 我试过这个,但consoleout 会打印所有日志(DEBUG、INFO、WARN、ERROR 和 CRITICAL),而consoleerr 只打印WAN, ERROR and CRITICAL。有没有办法只在consoleout 上打印 DEBUG 和 INFO?
    • 你设置了什么LEVEL?你的LOGGING 配置是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多