2011-06-01 94 views
18

我沒有找到有關使用Django 1.3字典配置設置系統日誌日誌的任何信息。 Django文檔不包括syslog,python文檔不太清晰,根本不涵蓋字典配置。我已經開始了以下,但我堅持如何配置SysLogHandler。如何使用Django 1.3日誌字典配置設置SysLogHandler

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': True, 
    'formatters': { 
     'verbose': { 
      'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' 
     }, 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
    }, 
    'handlers': { 
     'syslog':{ 
      'level':'DEBUG', 
      'class':'logging.handlers.SysLogHandler', 
      'formatter': 'verbose' 
     }, 

    }, 
    'loggers': { 
     'django': { 
      'handlers':['syslog'], 
      'propagate': True, 
      'level':'INFO', 
     }, 
     'myapp': { 
      'handlers': ['syslog'], 
      'propagate': True, 
      'level': 'DEBUG', 
     }, 
    }, 
} 

回答

21

終於找到了答案,修改配置在原來的問題,以對「系統日誌」下面:

from logging.handlers import SysLogHandler 
... 
     'syslog':{ 
      'level':'DEBUG', 
      'class': 'logging.handlers.SysLogHandler', 
      'formatter': 'verbose', 
      'facility': SysLogHandler.LOG_LOCAL2, 
     }, 
... 

警示後人:你幾乎必須準確地做到這一點像上面那樣,如果直接指定類,就會發生奇怪的錯誤。

更新:我剛搬到亞馬遜Linux(和Django 1.5),並對以下內容進行了以下更改:'syslog'部分Ë環境中,請注意「地址」參數:

'syslog':{ 
     'level':'DEBUG', 
     'class': 'logging.handlers.SysLogHandler', 
     'formatter': 'verbose', 
     'facility': 'local1', 
     'address': '/dev/log', 
    }, 
+0

在我看來,這裏的環境很重要 - 'syslog'是處理程序 - 對嗎?除非定義格式化程序,否則格式化程序將不起作用。可能值得刪除它以避免混淆(如我的)。 – ostergaard 2013-12-27 09:08:43

+0

@ajostergaard更新以清除這些是對原始字典的更改。讓我知道他們是不是更清楚。 – 2013-12-31 18:48:14

+0

我們如何給這個定製標籤?我需要在rsyslog中識別我的日誌條目並對其進行過濾。你可以在python日誌中做到這一點,但在django如何做到這一點,我不知道。你知道嗎 ? – Luv33preet 2017-06-28 14:48:36

9

這適用於我(在默認debian上)。

  1. 我懷疑使用地址/dev/log是確保沒有嘗試使用網絡的祕密。
  2. 我認爲使用的''記錄器標籤等同於根記錄器,以便能識別大部分的東西

在settings.py:

LOGGING = { 
    'version': 1, 
    'handlers': { 
     'syslog':{ 
      'address': '/dev/log', 
      'class': 'logging.handlers.SysLogHandler' 
     } 
    }, 
    'loggers': { 
     '': { 
      'handlers': ['syslog'], 
      'level': 'DEBUG', 
     } 
    } 
} 
在應用

import logging 
    logging.info("freakout info") 

提供:

john:/var/log$ sudo tail -1 user.log 
Dec 14 17:15:52 john freakout info 
+0

在這個答案中提出的要點1和2是我的案例的關鍵 – shadi 2018-01-01 11:23:03