2016-10-01 80 views
2

我正在编写一个Django应用程序并使用基本URL路由查看。我正在尝试实现对syslog的日志记录。我想记录所有传入的请求到系统日志。我LOGGING字典是这样的:状态为200的Django日志请求到系统日志

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse', 
     }, 
     'require_debug_true': { 
      '()': 'django.utils.log.RequireDebugTrue', 
     }, 
    }, 
    'formatters': { 
     'verbose': { 
      'format': '%(process)-5d %(name)s:%(lineno)d %(levelname)s %(message)s' 
     }, 
     'simple': { 
      'format': '[%(asctime)s] %(name)s %(levelname)s %(message)s', 
      'datefmt': '%d/%b/%Y %H:%M:%S' 
     }, 
    }, 
    'handlers': { 
     'console': { 
      'level': 'DEBUG', 
      'filters': ['require_debug_true'], 
      'class': 'logging.StreamHandler', 
      'formatter': 'simple' 
     }, 
     'syslog': { 
      'level': 'DEBUG', 
      'class': 'logging.handlers.SysLogHandler', 
      'facility': 'local7', 
      'address': '/dev/log', 
      'formatter': 'verbose' 
     }, 
    }, 
    'loggers': { 
     'django.server': { 
      'handlers': ['console', 'syslog'], 
      'level': 'INFO', 
      'propagate': False 
     }, 
     'my_project': { 
      'handlers': ['console', 'syslog'], 
      'level': 'INFO', 
      'propagate': False, 
     }, 
     # root logger 
     '':{ 
      'handlers': ['console', 'syslog'], 
      'level': 'INFO', 
      'disabled': False 
     }, 
    }, 
} 

每当我打任何URL服务器上,以下是登录到控制台:

[01/Oct/2016 18:30:34] "POST /api/v1/users/login/ HTTP/1.1" 200 73 
在我的日志文件

但一无所获。

当我在我的代码中插入logger.error('Something went wrong!')时,它会记录在我的日志文件中。

如何获取我的日志文件中的请求日志?从Django中到syslog

TIA

回答

1

的日志请求取决于几个因素:

  • 日志配置。我假设你的系统日志配置是 正确,并且syslog不会从local7中删除调试消息。
  • 如果你用'runserver'运行你的应用程序,django使用内置的轻量级http服务器。该服务器记录请求消息。在1.10之前,它曾经登录到sys.stderr并且无法通过LOGGING字典来配置它。在Django 1.10中,这已经改变为使用python日志记录机制:https://docs.djangoproject.com/en/1.10/ref/django-admin/#django-admin-runserver
  • 如果您使用nginx + uwsgi运行应用程序,例如日志记录请求由nginx/uwsgi处理。
+0

我使用Django 1.7,所以我想我将无法使用runserver在我的日志文件中获取请求日志。那么,我将在生产中使用nginx + uwsgi,所以希望我能够记录请求。谢谢! – R4chi7