为所有内容操作提供额外的条件和触发器
项目描述
简介
该包允许您审计对您的网站进行的操作。它通过使用可配置的内容规则来实现这一点。
默认情况下,在您激活此包后,它将创建所有可用于审计的内容规则,仅使用页面类型进行OOTB审计。如果您想审计更多类型的对象,您需要配置内容规则。
审计存储在关系数据库中。一旦安装并首次调用,如果不存在,它将创建一个名为“audit”的表,因此无需手动创建表。
审计日志尝试使用plone.app.async或collective.celery来执行存储操作,如果失败,它将直接完成任务。这样做的好处是允许单个“工作”客户端运行异步并处理所有这些请求。如果活动很多,它不会出现拥堵。异步将任务排队并在用户请求完成时处理它,避免在性能上的牺牲。如果您使用它,请参阅collective.async pypi页面以获取设置说明。Async不是AuditLog工作所必需的,但建议特别适用于高流量网站。
安装
从GitHub下载包并将其解压到您的src目录中。将“collective.auditlog”添加到buildout中的eggs和zcml slugs。在开发slugs中也包含位置(src/collective.auditlog)。运行buildout
在“站点设置”-》“插件”中激活审计日志。安装后,您将在“插件配置”下看到“AuditLog”。这是您可以配置关系数据库的地方。控制面板还允许您启用/禁用对工作副本上执行的操作的跟踪。配置字符串需要是一个有效的SQLAlchemy连接字符串。
剩下要做的就是配置新的内容规则来跟踪您想要的内容类型和操作。
升级
如果您是从旧版本升级,您需要从插件控制面板运行升级步骤。
用法
目前,collective.auditlog使用SQLAlchemy来存储数据。要使用PostgreSQL,需要在buildout中添加“psycopg2”egg。产品安装完成后,将正确的连接URL添加到产品设置中。示例
postgresql://enfold:enfold@localhost/auditlog
默认情况下,collective.auditlog使用内容规则来定义要捕获哪些事件。已添加一种额外的机制,允许站点自动记录collective.auditlog支持的各个事件。只需在配置中选择即可启用此功能。如果没有选择事件,则不会发生记录。
可以通过使用AuditableActionPerformedEvent从应用程序代码中记录自定义事件,如下所示
from zope event import notify from collective.auditlog.interfaces import AuditableActionPerformedEvent notify(AuditableActionPerformedEvent(obj, request, "action", "note"))
“obj”指的是受影响的内容对象;“request”是当前的zope请求,“action”和“note”分别对应于记录的操作及其描述。所有参数都是必需的,但除了obj之外的所有参数都可以设置为None,如果没有值可用。
除了控制面板配置之外,还可以使用buildout中的zope-conf-additional指令设置连接参数。请注意,这将优先于任何控制面板配置。示例
zope-conf-additional = <product-config collective.auditlog> audit-connection-string postgres://enfold:enfold@localhost/auditlog audit-connection-params {"pool_recycle": 3600, "echo": true} </product-config>
现在有一个用于审计日志条目的视图,位于@@auditlog-view。目前控制面板中没有链接到它。该视图使用无限滚动而不是分页来查看日志。
搜索审计日志
审计日志存储在SQL表中,因此您可以使用任何SQL数据库工具来分析审计日志。但是,有时您可能需要在生成日志的Plone对象的环境中查询日志,此时存储在SQL中的信息不足以完成此操作。为此,collective.auditlog提供了一种基于目录的机制,可以用于在日志记录时使用任何可用的Plone索引来查询日志。这可以用于开发一个显示最新已修改文档的组件。
要启用基于目录的记录,请在审计日志控制面板中选择sql+zodb存储。信息仍将存储在SQL数据库中,但将启用一个特殊目录来存储Plone索引信息。
启用此存储后,您可以使用类似目录的查询来搜索日志
from datetime import datetime from collective.auditlog.catalog import searchAudited from = datatime(2018,6,1) to = datetime(2018,12,31) query = {'portal_type': 'Document', 'review_state': 'published'} audited = searchAudited(from_date=from, to_date=to, actions=['added', 'modified'], **query)
所有参数都是可选的,但空查询将返回所有索引对象,因此请谨慎使用。
请注意,查询将返回目录记录,并且任何在所选日期范围内执行了多个操作的文档,只会在列表中显示一次。还有已删除项的目录记录,因此即使它们已从Plone中删除,也可以进行查询。
Celery集成
collective.celery包需要在main buildout部分的eggs中添加celery和collective.celery eggs。示例
eggs = celery Plone collective.celery
我们仍然使用celery-broker部分,为了清晰。celery部分仍然是必需的,但更简单
[celery-broker] host = 127.0.0.1 port = 6379 [celery] recipe = zc.recipe.egg environment-vars = ${buildout:environment-vars} eggs = ${buildout:eggs} flower scripts = pcelery flower
celery部分依赖于在main environment-vars部分添加一些变量
environment-vars = CELERY_BROKER_URL redis://${celery-broker:host}:${celery-broker:port} CELERY_RESULT_BACKEND redis://${celery-broker:host}:${celery-broker:port} CELERY_TASKS collective.es.index.tasks
额外的Zope配置
现在在collective.celery中有一个钩子,可以在运行任务之前执行额外的zope配置。如果任务模块包含一个‘extra_config’方法,它将在工作器初始化时传递zope启动对象。这是由collective.es.index用于运行Elasticsearch配置方法。
监控Celery任务
Celery需要作为一个独立进程启动。建议使用supervisord进行此操作。要从命令行尝试它,可以在buildout目录中运行“bin/pcelery worker”。请注意,脚本现在命名为‘pcelery’,并且需要一个指向Zope配置的路径。示例
$ bin/pcelery worker parts/client1/etc/zope.conf
Flower包含在此设置中。从buildout目录中运行“bin/flower”,并使用浏览器在http://localhost:5555上查看仪表板。请注意,现在代理是一个必需的参数
$ bin/flower --broker redis://127.0.0.1:6379
依赖项
安装collective.auditlog时,所有依赖项都会自动安装。这里只是列出那些供参考
setuptools
sqlalchemy
five.globalrequest
plone.app.async [可选]
collective.celery [可选]
变更日志
2.0.0 (2023-05-31)
重新发布2.0.0a2为2.0.0。这将是对Python2.7支持的最后一个版本。[ale-rt]
2.0.0a2 (2020-03-19)
修复实例脚本中请求没有环境属性的问题。[ale-rt]
2.0.0a1 (2020-03-11)
删除不一致传递请求参数,并使用zope.globalrequest代替。[thet]
删除弃用。action.canExecute重命名为can_execute,不带参数,是一个属性。[thet]
Python 3兼容性。[thet]
删除对plone.app.async的支持。由于async是一个保留字,这不能与Python 3兼容。使用collective.celeries代替。[thet]
删除对Archetypes的支持。[thet]
Plone 5.2兼容性。删除对Plone 5.0和4.3的支持(两者都缺少zope.interface.interfaces.IObjectEvent)。[thet]
将Arhcetype作为软依赖项。[ale-rt]
与Plone代码风格对齐:black,isort。[thet]
修复对formlib的软依赖项。[ale-rt]
加快规则检索速度。[ale-rt]
向AuditActionExecutor类添加了一些memoized属性和方法,以方便自定义。[ale-rt]
collective.celery集成[enfold]
@@auditlog-view允许查看/排序/搜索审计日志条目[enfold]
添加登录和注销审计[enfold]
可以在配置文件中指定sqlalchemy DSN[enfold]
在存储审计日志条目前通知一个事件。[enfold]
使用自定义权限查看审计日志。[enfold]
修复测试。[enfold]
修复db连接泄露。[enfold]
在info字段中使用有效的json。[enfold]
1.3.3 (2018-07-12)
将getObjectInfo和addLogEntry分离出来。[reinhardt]
1.3.2 (2018-07-11)
在完全禁用审计日志时跳过检索规则,提高了性能。[reinhardt]
1.3.1 (2017-04-13)
修复升级步骤标题。[ale-rt]
1.3.0 (2017-04-13)
可以通过注册记录指定引擎参数(如pool_recycle,echo等)[ale-rt]
1.2.2 (2016-06-06)
在IActionSucceededEvent上使操作更健壮。[ale-rt]
1.2.1 (2016-05-10)
修复 Unicode 问题
测试恢复正常工作 [ale-rt]
1.2.0 (2016-05-03)
第一个公开版本
项目详情
collective.auditlog-2.0.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a7a81999230927aa1c52b4ad93c26ed95b4f98a83290c0fba004ce651655b5e7 |
|
MD5 | 410053727a92e8dd122ea04765dacd2d |
|
BLAKE2b-256 | a6a925194239eeee26699dc4da6072c3699caba0a0fb03a157d8e047127fba22 |