贵金属行情
微信公众号

使用rsyslog收集Django的日志

引言

1
2
3
日志收集对项目很重要,在前边我写过一篇如何利用sentry收集django程序运行时的日志,我们的项目中一般用sentry
来收集error日志,因为打的比较详细,可观性也比较强。但是我们如果把info日志达到sentry上不方便观看,所以不
妨使用rsyslog来收集Django中的一些info日志,当然只是打我们想要的东西。

环境说明

1
ubuntu12.04

搭建rsyslog环境

安装

1
2
在Ubuntu中默认已经装好了rsyslog,当然如果有问题你可以自己安装(使用apt-get 
install rsyslog即可,你也可以使用编译安装)

配置(/var/log/mylog/forum.log)

1
2
   你可以添加类似这样一条:
local4.* /var/log/mylog/forum.log

重启rsyslog

1
service rsyslog restart

在Django中使用

修改Djangosettings.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
   from logging.handlers import SysLogHandler

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': "iSync|%(levelname)s|%(asctime)s|%(module)s|%(process)d|%(thread)d|%(message)s",
},
'simple': {
'format': "iSync|%(levelname)s|%(asctime)s|%(message)s",
},
},
'handlers': {
'null': {
'level': 'INFO',
'class': 'logging.NullHandler',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
},
'syslog': {
'level': 'INFO',
'class': 'logging.handlers.SysLogHandler',
'formatter': 'simple',
'facility': SysLogHandler.LOG_LOCAL4, #此处一定要和rsyslog中的local4一致
'address': '/dev/log', # 机器上一定要有该文件(srw-rw-rw-)
},
},

'loggers': {
'django.request': {
'handlers': ['console', 'null'],
'level': 'ERROR',
'propagate': True,
},
'rsyslog': {
'handlers': ['syslog', ],
'level': 'INFO',
'propagate': True,
},
},

}

在view或其他地方调用,将日志打到rsyslog

1
2
3
   rsysloger = logging.getLogger('rsyslog')
rsysloger.info('sdsdsdsds')
# 之后你可以去/var/log/mylog/forum.log 看结果了

利用sentry收集Django日志

yunsonbai wechat
微信公众号