我没有运气找到有关使用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',
},
},
}
Run Code Online (Sandbox Code Playgroud)
Rob*_*rne 22
终于找到了答案,修改原始问题中的配置以获得"syslog"的以下内容:
from logging.handlers import SysLogHandler
...
'syslog':{
'level':'DEBUG',
'class': 'logging.handlers.SysLogHandler',
'formatter': 'verbose',
'facility': SysLogHandler.LOG_LOCAL2,
},
...
Run Code Online (Sandbox Code Playgroud)
对后代的警告:你几乎必须像上面那样做,如果直接指定类等,会发生奇怪的错误.
更新:我刚刚转移到Amazon Linux(和Django 1.5)并对该环境中的'syslog'部分的配置使用了以下更改,请注意'address'参数:
'syslog':{
'level':'DEBUG',
'class': 'logging.handlers.SysLogHandler',
'formatter': 'verbose',
'facility': 'local1',
'address': '/dev/log',
},
Run Code Online (Sandbox Code Playgroud)
这适用于我(默认debian).
/dev/log
是确保没有尝试使用网络的秘密.''
等同于根记录器,因此将捕获大多数东西在settings.py中:
LOGGING = {
'version': 1,
'handlers': {
'syslog':{
'address': '/dev/log',
'class': 'logging.handlers.SysLogHandler'
}
},
'loggers': {
'': {
'handlers': ['syslog'],
'level': 'DEBUG',
}
}
}
Run Code Online (Sandbox Code Playgroud)
在应用程序中:
import logging
logging.info("freakout info")
Run Code Online (Sandbox Code Playgroud)
规定:
john:/var/log$ sudo tail -1 user.log
Dec 14 17:15:52 john freakout info
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9586 次 |
最近记录: |