Sentry是个很好用的错误日志服务器,可以将程序错误的详细情况集中捕获,并提供一个很漂亮的Web界面来浏览错误。 Sentry本身是用python写的,但它支持python、php、ruby、iOS等多种语言。

要使用Sentry,你需要一台服务器来运行Sentry服务器,然后需要在代码中插入Sentry客户端的代码。服务器安装方法如下:

$ sudo pip install sentry

目前(2013/1/22)安装过程中可能会发生找不到某些依赖的情况,比如无法安装Django-1.4.3等, 可能需要手工下载Django-1.4.3的代码、编译安装后再重新执行上述命令。

我遇到的另一个问题是,代码使用的是django-1.3,而sentry要求django-1.4,而且我打算在应用服务器上运行sentry, 所以不得不使用virtualenv来安装sentry。

装好之后需要使用以下命令建立配置文件:

$ mkdir ~/.sentry
$ sentry init ~/.sentry/sentry.conf.py

然后打开~/.sentry/sentry.conf.py,按照需要修改。我在SENTRY_WEB_OPTIONS中加了一项daemon: True, 使sentry以daemon模式运行。

然后启动sentry服务器即可。

$ sentry start

执行该命令会让你输入管理帐号和密码。

用浏览器访问 http://localhost:9000/,即可看到sentry的Web界面。登录之后建立一个项目,然后即可配置客户端。 对于使用django框架的项目,客户端可以如下配置:

$ sudo pip install raven       # 如果项目和sentry位于不同服务器,可能需要安装raven

打开django的settings.py,加入:

SENTRY_DSN = 'xxxxxxx'         # 在sentry的Web界面中建立项目后即可查看
                               # for django的配置文档,从中可以找到`SENTRY_DSN`的值
INSTALLED_APPS = {
    ....
    'raven.contrib.django',    # 加入这一行
    ....
}

这样django项目中产生的异常就都会集中到sentry服务器上了。

如果不想自己搭建sentry服务器,还可以使用官方提供的服务,价格也不算太高。