首页 > 解决方案 > django频道内的日志消费者没有出现

问题描述

环境:

OS: redhat
python version: 3.6
django: 2.1
django channels: 2.1.3

以下是我的 logging.conf 文件(与 settings.py 级别相同):

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'standard': {
        'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s',
        'datefmt': '%Y-%m-%d %H:%M:%S',
    },
},
'handlers': {
    'file': {
        'level': 'DEBUG',
        'class': 'logging.FileHandler',
        'filename': 'debug.log',
        'formatter': 'standard'
    },
},
'loggers': {
    'django': {
        'handlers': ['file'],
        'level': 'DEBUG',
        'propagate': True,
    },
},
}

django_logger = logging.getLogger('django')

和记录功能如下:

def log_it(*args):
    try:
        django_logger.info(str(args).encode('utf-8'))
        return True
    except:
        django_logger.info('#### Exception in LOGGING!!!!!!')
    return False

我正在使用它来登录 django 消费者,如下所示:

class EchoConsumer(SyncConsumer):
   def websocket_connect(self, event):
      try:
          log_it('inside EchoConsumer connect()', event)
          self.send({
            "type": "websocket.accept",
          })
        return True
      except:
          error = traceback.format_exc()
          write_error_log(error)
      return False

   def websocket_receive(self, event):
      try:
          log_it('inside EchoConsumer receive()', event)
          self.send({
            "type": "websocket.send",
            "text": event["text"],
          })
          return True
      except:
          error = traceback.format_exc()
          write_error_log(error)
      return False

消费者内部使用的 log_it() 没有被调用

(假设:将频道与 django 集成必须覆盖 django 日志记录设置)

我检查了在达芙妮访问日志中联系消费者是否有任何问题。我也检查了我的nginx conf,但是连接请求记录如下:

127.0.0.1:45100 - - [08/Oct/2018:19:00:58] "WSCONNECTING /ws/event/" - -
127.0.0.1:45100 - - [08/Oct/2018:19:00:58] "WSCONNECT /ws/event/" - -

注意:我已在 routing.py 中将 /ws/event 链接到 EchoConsumer

我的期望是:

127.0.0.1:45100 - - [08/Oct/2018:19:00:58] "WSCONNECTING /ws/event/" - -
127.0.0.1:45100 - - [08/Oct/2018:19:00:58] "WSCONNECT /ws/event/" - -
inside EchoConsumer connect() ....

知道为什么不显示日志语句吗?

github上的PS相关问题

标签: pythondjangodjango-channels

解决方案


推荐阅读