使用带Django的Logging SocketHandler

时间:2018-01-15 09:09:55

标签: django logging

我已将日志配置为:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
        'cute':{
            'class': 'logging.handlers.SocketHandler',
            'host': '127.0.0.1',
            'port': 19996
        },
    },
    'loggers': {
        'django': {
            'handlers': ['cute'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
        },
    },
}

但是当我尝试注销时,我在控制台中收到错误:

TypeError: an integer is required (got type socket)

我认为这似乎是在尝试腌制日志消息时发生的。

发生了什么,我怎样才能让SocketHandler工作?

1 个答案:

答案 0 :(得分:0)

有一个bug report。无法腌制该请求对象,并且日志失败。

在我遇到与您相同的错误之前,我的记录器就像您的记录器一样。由于我的代码包含无法处理请求的应用程序,因此我部分解决了为navigate=no创建日志而没有django.request

的问题
socket_handler

不过,bug report也建议创建一个自定义SocketHandler删除请求:

'django.request': {
        'handlers': ['defaultfile', 'console'],
        'level': 'WARNING',
        'propagate': False,
    },

我还没有尝试过,但这可能是一条路。