Как настроить SysLogHandler с конфигурацией словаря Django 1.3
Мне не повезло найти информацию о настройке регистрации журнала syslog с помощью конфигурации словаря Django 1.3. Документы 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',
},
},
}
Ответы
Ответ 1
Наконец, нашел ответ, измените конфигурацию в исходном вопросе, чтобы иметь следующее для "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',
},
Ответ 2
Это работает для меня (по умолчанию debian).
- Я подозреваю, что использование адреса
/dev/log
- это секрет, чтобы убедиться, что нет попытки использовать сеть.
- Я думаю, что использование метки logger
''
равнозначно корневому журналу, поэтому будет улавливаться большинство вещей
В 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