python - Django 记录器 - 正确输出到 stdout 和 stderr

标签 python django logging

似乎 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

至关重要

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

最佳答案

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

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

关于python - Django 记录器 - 正确输出到 stdout 和 stderr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24117481/

相关文章:

python - 如何在 Python 中向 Sentry 发送日志记录附件?

python - 将 Matlab @ 翻译成 Python 代码(RuntimeWarning : invalid value encountered in true_divide )

python - 从具有重复索引的数据框中选择

python - 使用替代模块满足 pip 要求

python - 在python中使用sftp从远程机器复制文件

django 忽略查询中模型定义的排序参数

django - 添加新的唯一字段时如何正确进行迁移

python - 在 Django 中,如何获取 URI 解析到的基于类的 View 的实例?

logging - NGINX 错误日志格式文档

javascript - 是否可以在 Debug模式下运行 chrome?