2016-10-01 79 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