18

我没有找到任何有关使用 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',
        },
    },
}
4

2 回答 2

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',
    },
于 2011-06-03T17:32:51.233 回答
10

这对我有用(在默认的 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
于 2011-12-14T06:28:37.170 回答