跳转到主要内容

Plone的格式化日志记录

项目描述

ftw.structlog

本软件包实现了 Plone 中的结构化请求日志记录。

它通过写入日志文件(每个实例一个)来实现,每行包含一个JSON条目,记录每个请求的信息。这个JSON条目包含了Z2日志提供的信息,以及更多,以结构化的键/值对形式呈现。

安装

  • 通过将ftw.structlog添加到你的构建工具列表中安装它。然后运行构建工具并重新启动你的实例。

[instance]
eggs +=
    ftw.structlog
  • 或者,将其作为你包的setup.py文件的依赖项添加。

记录的信息

示例条目

{
  "bytes": 6875,
  "cient_ip": "127.0.0.1",
  "duration": 0.30268411636353,
  "host": "127.0.0.1",
  "method": "GET",
  "referer": "http:\/\/localhost:8080\/plone",
  "site": "plone",
  "status": 200,
  "timestamp": "2017-07-29T12:30:58.000750+02:00",
  "url": "http:\/\/localhost:8080\/plone\/my-page",
  "user": "john.doe",
  "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/60.0.3112.113 Safari\/537.36",
  "view": "some_view"
}

记录的JSON条目包含以下数据

字节

响应体的大小(以字节为单位)(Content-Length

client_ip

请求源的主机(尊重X-Forwarded-For)

duration

在ZPublisher中处理请求花费的时间(从IPubStartIPubSuccess / IPubFailure 的时间)

host

已弃用。你应该使用client_ip

method

HTTP请求方法

referer

Referer

site

Plone站点ID

status

HTTP响应状态

timestamp

请求接收的时间(ISO 8601的非天真本地时间,服务器的本地时区由tzlocal确定)

url

请求的URL(如果存在,包括查询字符串)

user

已认证用户的用户名,否则为"Anonymous"

user_agent

User-Agent

view

浏览器视图或REST API端点的名称(见下文)

如果已安装并集成SQLAlchemy,并且通过z3c.saconfig进行集成,则SQL查询时间也会被记录。对于执行SQL查询的请求,将有一个额外的键sql_query_time,包含该请求期间所有SQL查询的累积时间。

sql_query_time

请求期间所有SQL查询的累积时间(以秒为单位)

日志目的地

ftw.structlog默认将日志记录到文件,但也可以配置为记录到Fluentd / Fluent Bit实例。

记录到文件

默认情况下,ftw.structlog将记录到本地文件,每行一个JSON对象。

将为每个Zope2实例创建一个日志文件,其位置和名称将来自实例的事件日志路径。如果实例的事件日志路径是var/log/instance2.log,则JSON日志文件的路径将是var/log/instance2-json.log

注意:由于ftw.structlog从事件日志路径派生其日志文件名,必须在zope.conf中配置事件日志,否则ftw.structlog不会记录任何请求,并通过根日志器大声抱怨。

当在其他项目中运行测试时,可以通过设置环境变量FTW_STRUCTLOG_MUTE_SETUP_ERRORS=true来静默这些错误。

记录到Fluentd

如果已设置环境变量FLUENT_HOST,则ftw.structlog将使用Fluentd Forward协议记录到该Fluent主机,而不是记录到本地文件。FLUENT_HOST(可选)允许指定端口号,如果未设置,则默认为24224。

为了使ftw.structlog能够为记录到Fluentd的事件使用合适的标签,Pod命名空间需要在KUBERNETES_NAMESPACE环境变量中公开。

视图名称

尝试记录被调用的浏览器视图或REST API端点的名称,以便能够轻松地对特定视图进行分组,而不必依赖URL字符串解析。

然而,这是故意限制的,目的是只处理最常见和最有用的案例。它还通过将非常常见的请求(CSS和JS资源)归类到共同名称下,以避免在日志中填充过多的不同值。

以下表格展示了不同“视图”名称的记录示例

视图类型

view

常规浏览器视图

‘some_view’

常规浏览器视图,发布属性

‘some_view/attr’

plone.rest命名服务

@actions’

具有路径参数的plone.rest命名服务

@users’

plone.rest未命名的GET/POST/…

‘context’

CSS

‘portal_css’

JS

‘portal_javascripts’

资源

‘++resource++’

主题资源

‘++theme++’

变更日志

1.4.1 (2023-04-04)

  • Fluentd日志:使用K8s命名空间标签。[lgraf]

1.4.0 (2023-02-01)

  • 添加对日志记录到Fluentd的支持。[lgraf]

1.3.1 (2020-05-19)

  • SQL查询日志:在尝试注释可能尚未准备就绪的请求时更加谨慎(例如,在测试期间)。[lgraf]

1.3.0 (2020-05-19)

  • 记录浏览器视图和REST API服务的视图名称。[deiferni, lukasg]

1.2.0 (2020-05-19)

  • 如果存在SQLAlchemy,则跟踪查询执行时间。[lgraf]

1.1.0 (2019-01-11)

  • 已弃用:字段host已被弃用。相反,应使用新引入的client_ip字段来获取客户端的IP地址。[lgraf]

  • 始终将缺少的referer记录为空字符串,而不是null。[lgraf]

1.0.1 (2017-09-03)

  • 如果无法找到eventlog配置以从中推导日志位置,则优雅地失败。而不是阻止实例启动,使用root记录器记录一个明显的错误消息。[lgraf]

1.0.0 (2017-09-03)

  • 初始实现[lgraf]

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源代码分发

ftw.structlog-1.4.1.tar.gz (25.8 kB 查看哈希)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面