如何使用Django 1.3日志字典配置设置SysLogHandler

时间:2011-06-01 17:26:20

标签: django syslog

我没有找到有关使用Django 1.3字典配置设置syslog日志记录的任何信息。 Django文档不包括syslog,python文档不够清晰,根本不包括字典配置。我从以下开始,但我仍然坚持如何配置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',
        },
    },
}

2 个答案:

答案 0 :(得分:22)

终于找到了答案,修改原始问题中的配置以获得“syslog”的以下内容:

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

警告后代:你几乎必须像上面那样做,如果你直接指定类等会发生奇怪的错误。

更新:我刚刚转移到Amazon Linux(和Django 1.5)并对该环境中的'syslog'部分的配置使用了以下更改,请注意'address'参数:

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

答案 1 :(得分:9)

这适用于我(默认debian)。

  1. 我怀疑使用/dev/log地址是确保没有尝试使用网络的秘密。
  2. 我认为使用''的记录器标签等同于根记录器所以会捕获大部分内容
  3. 在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