2011-06-01 91 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