[英]Django logging requests
我在aws
elastic beanstalk 中使用 django 1.11 并且我一直试图让我的应用程序在没有运气的情况下登录。 . .
我的 settings.py 中有这些
LOGGING_CONFIG = None
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/opt/python/current/app/staging.log',
},
},
'loggers': {
'': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
'django.request': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
}
import logging.config
logging.config.dictConfig(LOGGING)
然后我尝试调用我的一个 API 并期望日志中显示某些内容,但它没有。 我django.request
logger 应该自动记录所有传入的请求还是我必须创建一个中间件来执行logger.debug('something')
?
登录 django 比我想象的要复杂得多:(
Django 记录器扩展在开发和生产中的工作方式不同(settings.DEBUG=True|False)。
您希望看到的 - http 请求日志 - 由django.server记录器编写,
仅在开发服务器中有效(runserver 命令)。
我看到在您的配置中您使用了django.request记录器。 这个记录器名称非常令人困惑 - 因为顾名思义 - 用户会期望它记录所有 http 请求 - 但它不会。
django.request只会记录 4xx 和 5xx 请求。
我制作了一个截屏视频,详细解释了这个问题。
登录django的演示,日志位于/path/to/your/project/log/info.log
,您需要先在 log/ dir 中创建 info.log 。
设置.py
LOG_PATH = os.path.join(BASE_DIR, "log/")
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format': '%(asctime)s [%(levelname)s]- %(message)s'}
},
'handlers': {
'django_error': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'filename': LOG_PATH + 'django.log',
'formatter': 'standard'
},
'info': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'filename': LOG_PATH + 'info.log',
'formatter': 'standard'
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'standard'
}
},
'loggers': {
'info': {
'handlers': ['info', "console"],
'level': 'DEBUG',
'propagate': True
},
'django': {
'handlers': ['console'],
'level': 'INFO',
'propagate': True,
},
'django.request': {
'handlers': ['django_error', 'console'],
'level': 'DEBUG',
'propagate': True,
},
'django.db.backends': {
'handlers': ['console'],
'level': 'ERROR',
'propagate': True,
}
},
}
记录器的作用是:
更多信息在这里
视图.py
import logging
logger = logging.getLogger("info")
logger.info('something')
你会得到
2017-08-31 13:05:40,492 [INFO]- something
稍后在 log/info.log 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.