我没有找到有关使用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',
},
},
}
答案 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)。
/dev/log
地址是确保没有尝试使用网络的秘密。''
的记录器标签等同于根记录器所以会捕获大部分内容在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