django logdb允许您将条目记录到数据库中并定期聚合它们。
django-logdb的Python项目详细描述
Django-logdb
django logdb允许您将条目记录到数据库中,聚合并执行以下操作 它们有一定的规则,让您对发生的事情有更多的了解。
Django LogDB要求Django 1.1及更高版本。
说明
django logdb有一个自定义日志处理程序,它将日志条目写入 数据库。因此,它与您现有的日志很好地集成在一起 配置,您可以决定将哪些日志条目写入数据库。
django管理站点通过最近日志条目的图形视图进行了扩展 以提供更多关于正在发生的事情的见解。日志消息按 日志级别或"日志条目类型"。
为了最小化数据库访问,聚合是通过django命令完成的 可以定期调用(作为cronjob)。
安装
安装软件包的最简单方法是通过setuptools:
easy_install django-logdb
安装后,更新django
settings.py并将djangologdb
已安装的应用程序:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
...
'djangologdb',
)
在django
urls.py
中,在管理员:
urlpatterns = patterns('',
...
(r'^admin/djangologdb/', include('djangologdb.urls')),
...
(r'^admin/', include(admin.site.urls)),
)
或者,如果要记录异常,请添加中间件:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
...
'djangologdb.middleware.LoggingMiddleware',
)
运行python manage.py syncdb以创建数据库表。
设置日志记录
现在,对于实际的日志部分,您应该使用数据库日志处理程序。
有两种方法可以做到这一点:只使用python代码,或者使用
配置文件。这两种方法的说明如下。
要通过python将此处理程序添加到根日志程序中,例如
以下是您的django
settings.py
:
import logging
from djangologdb.handler import DjangoDatabaseHandler, add_handler
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger()
# A bug in Django causes the settings to load twice. Using
# this handler instead of logging.addHandler works around that.
add_handler(logger, DjangoDatabaseHandler())
要通过日志配置文件使用此处理程序,只需导入
处理程序
来自djangologdb的模块
从文件加载配置:
from djangologdb import handlers
logging.config.fileConfig(...)
然后在日志配置文件中,可以从处理程序中添加它
名称空间并将其添加到任何想要的记录器:
[handlers]
keys=djangologdb
[logger_root]
level=NOTSET
handlers=djangologdb
[handler_djangologdb]
class=handlers.DjangoDatabaseHandler
args=()
配置
您可以在django
settings.py
文件中设置以下设置:
< DL>
日志数据库历史记录天数
在各种图表中显示的天数。
默认值:
LOGDB_HISTORY_DAYS = 30
对数间隔
各种图中每个数据点之间的
时间增量
。
默认值:
LOGDB_INTERVAL = datetime.timedelta(1) # 1 day
日志数据库规则
定义在某些条件为真时创建新日志项的规则。
默认值:
easy_install django-logdb
0
日志数据库级别颜色
为基于级别的数据集设置要在图形中使用的颜色。
默认值:
easy_install django-logdb
1
日志数据库媒体根目录
设置指向django logdb
媒体目录的绝对路径。
默认值:
easy_install django-logdb
2
日志数据库媒体URL
设置处理从
logdb\u media\u根服务的媒体的url。制作
一定要在结尾加上一个斜杠。如果
settings.debug=true,则
Django将为媒体提供服务。
默认值:
easy_install django-logdb
3
命令
< DL>
聚合日志
聚合日志条目并触发具有匹配规则的任何操作。
< DL>
用法
python
django admin.py
聚合日志
选项
:
< D> >表>
< COL/>
< COL/>
<正文>
-s
,
--跳过操作
不要使用规则创建新日志。
--cleanup=
清除
指定保留日志项的天数
并删除其余部分。
<表>
FAQ
< DL>
图表不显示在Django管理员中。
如果您没有
设置。debug=true
,介质将不会被
詹戈您应该将媒体目录复制到您自己的媒体目录,然后
相应地设置logdb_media_root和logdb_media_url。
示例:
easy_install django-logdb
4
您也可以使用apache的alias指令来提供
静态文件,就像你对django自己的媒体文件所做的那样。它是
此处解释:
http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/提供媒体文件
这可以归结为在virtualhost条目中添加以下行:
easy_install django-logdb
5
示例:
easy_install django-logdb
6
django logdb的django管理页面加载非常慢。
如果图中有很多数据点,它将执行许多查询。
这可能需要一些时间。你应该缩短时间或者增加
间隔。默认情况下,使用间隔为1天的最后30天,
产生30个数据点。
请参见设置
logdb_history_days
和
logdb_interval
为什么每个数据点执行一个查询?
django还不允许按特定日期信息分组。偶数
虽然时间戳存储在数据库中,但无法告诉
Django orm按天、按小时等分组。我用的解决方法是
过滤/限制构造1个数据点所需的结果。
当我运行测试时,我看到
错误:djangologdb.middleware
[…]
当您运行例如testproject时,配置设置为
任何错误也会显示在sys.stderr上。如你所见,
测试都成功,但测试的异常仅显示在
控制台。这不是错误!
您可以通过禁用您的
测试配置(即删除处理程序)。
为什么模板要扩展django基模板的本地版本?
这样做是为了实现自定义模板的最佳灵活性。皮肤像
grappelli覆盖了很多模板,有时您希望能够
更改和使用django logdb中的基本模板并更改一些细节
在django logdb模板本身中,不复制所有基本模板
东西。< /dD>
测试项目
testproject是django logdb的示例安装。它提供了
django 1.1和django 1.2的设置文件,只需运行即可。
在testproject下面的目录中,创建一个虚拟环境:
easy_install django-logdb
7
安装django并使用以下设置文件之一运行内部服务器
您的Django版本。
< Buff行情>
$bin/python bin/pip安装django
$bin/python bin/django-admin.py runserver–settings=testproject.settings\u django\u 1
谢谢
对于那些帮助这个项目变得越来越好的人来说:
-
梅西克·斯泽斯尼亚克(Vvarp)
-
维克多范登埃尔岑
感谢david cramer在django db log上的工作
(http://github.com/dcramer/django-db-log/" rel="nofollow">http://github.com/dcramer/django-db-log/)此软件包所基于的。