Skip to content

Log streaming 日志流#

功能可用性

Log Streaming 日志流在所有企业版计划中可用。

日志流允许您将事件从 n8n 发送到您自己的日志工具。这使您能够在自己的警报和日志记录流程中管理 n8n 监控。

Set up log streaming 设置日志流#

要使用日志流,您必须添加一个流目的地。

  1. 导航到 Settings 设置 > Log Streaming 日志流
  2. 选择 Add new destination 添加新目的地
  3. 选择您的目的地类型。n8n 打开 New Event Destination 新事件目的地 模态框。
  4. New Event Destination 新事件目的地 模态框中,输入事件目的地的配置信息。这些取决于您使用的目的地类型。
  5. 选择 Events 事件 以选择要流式传输的事件。
  6. 选择 Save 保存

自托管用户

如果你是自托管 n8n,可以使用环境变量配置额外的日志流行为。你也可以通过环境变量管理目标,详情请参阅使用环境变量配置日志流目标

Per-process event log files 按进程划分的事件日志文件#

n8n 会先将每个发出的事件持久化到本地日志文件中,再转发到日志流目标。该文件在重启后仍会保留,并允许 n8n 重新发送之前尚未投递成功的事件。

默认情况下,n8n 会将事件日志写入 <n8n-user-folder>/n8nEventLog.log,其中 worker 或 webhook processor 进程会自动附加 -worker-webhook-processor 后缀。当一个事件日志文件只由单个 n8n 进程持有时,这一默认行为没有问题。

共享可写文件系统

如果多个 n8n 进程共享同一个可写卷,例如队列模式下由 NFS 或 EFS 共享持久卷支撑的 worker,那么它们绝不能写入同一个事件日志文件。多个进程并发追加可能导致文件内容交错或损坏,进而造成恢复失败和事件丢失。

为避免这种情况,请在每个进程上为 N8N_EVENTBUS_LOGWRITER_LOGFULLPATH 设置唯一的绝对路径,并确保该路径以 .log 结尾。n8n 会原样使用该路径,不再追加进程类型后缀,因此不同进程之间的唯一性需要由你的编排系统负责。

配套变量 N8N_EVENTBUS_LOGWRITER_MAXTOTALMESSAGESPERFILE 用于限制 n8n 在恢复过程中从单个事件日志文件中最多解析多少行,这样即使文件损坏,也不会耗尽进程内存。

注意:

  • 当未设置 N8N_EVENTBUS_LOGWRITER_LOGFULLPATH 时,默认行为保持不变。
  • 设置该变量后,n8n 不会自动为路径附加后缀。每个进程都必须拿到自己的独立值。
  • 如果此前部署中已存在共享的 n8nEventLog-worker.log 文件,请在启用此配置前手动隔离处理。n8n 不会自动删除旧文件。

Events#

以下事件可用。您可以在Settings 设置 > Log Streaming 日志流 > Events 事件中选择要流式传输的事件。

  • Workflow
    • Started
    • Success
    • Failed
    • Cancelled
  • Node executions
    • Started
    • Finished
  • Audit
    • User login success
    • User login failed
    • User signed up
    • User updated
    • User deleted
    • User invited
    • User invitation accepted
    • User re-invited
    • User email failed
    • User reset requested
    • User reset
    • User credentials created
    • User credentials shared
    • User credentials updated
    • User credentials deleted
    • User API created
    • User API deleted
    • User MFA enabled
    • User MFA disabled
    • User execution deleted
    • Execution data revealed
    • Execution data reveal failed
    • Package installed
    • Package updated
    • Package deleted
    • Workflow created
    • Workflow deleted
    • Workflow updated
    • Workflow archived
    • Workflow unarchived
    • Workflow activated
    • Workflow deactivated
    • Workflow version updated
    • Workflow executed
    • Workflow waiting
    • Workflow resumed
    • Variable created
    • Variable updated
    • Variable deleted
    • External secrets provider settings saved
    • External secrets provider reloaded
    • External secrets connection created
    • External secrets connection updated
    • External secrets connection deleted
    • External secrets connection tested
    • External secrets connection reloaded
    • Personal publishing restricted enabled
    • Personal publishing restricted disabled
    • Personal sharing restricted enabled
    • Personal sharing restricted disabled
    • 2FA enforcement enabled
    • 2FA enforcement disabled
    • Token exchange succeeded
    • Token exchange failed
    • Token exchange embed login
    • Token exchange embed login failed
    • Token exchange identity linked
    • Token exchange user provisioned
    • Token exchange role updated
    • Role mapping roles resolved
    • Role mapping rule created
    • Role mapping rule updated
    • Role mapping rule deleted
    • Role mapping rules bulk deleted
  • Worker
    • Started
    • Stopped
  • AI node logs
    • Memory get messages
    • Memory added message
    • Output parser parsed
    • Retriever get relevant documents
    • Embeddings embedded document
    • Embeddings embedded query
    • Document processed
    • Text splitter split
    • Tool called
    • Vector store searched
    • LLM generated
    • LLM error
    • Vector store populated
    • Vector store updated
  • Runner
    • Task requested
    • Response received
  • Queue
    • Job enqueued
    • Job dequeued
    • Job completed
    • Job failed
    • Job stalled

目的地#

n8n 支持三种目的地类型:

  • syslog 服务器
  • 通用 webhook
  • Sentry 客户端

Configure using environment variables 使用环境变量配置#

如果你是自托管 n8n,可以通过环境变量而不是 UI 来管理日志流目标。该能力自 n8n v2.19.0 起可用。将 N8N_LOG_STREAMING_MANAGED_BY_ENV 设为 true,并在 N8N_LOG_STREAMING_DESTINATIONS 中以 JSON 数组形式提供你的目标配置。n8n 会在每次启动时重新应用这些配置,并将 Log Streaming 日志流 UI 锁定为只读。完整模式说明请参阅使用环境变量管理实例设置

变量 类型 默认值 说明
N8N_LOG_STREAMING_MANAGED_BY_ENV Boolean false 设为 true 后,可通过环境变量管理日志流。启用后,n8n 会在每次启动时应用日志流相关变量,并锁定对应的 UI 控件。
N8N_LOG_STREAMING_DESTINATIONS JSON string - 日志流目标的 JSON 数组。每个目标都是一个对象,type 可为 webhooksyslogsentry,并附带该类型对应的配置。

Common fields 通用字段#

无论 type 是什么,每个目标都支持以下字段。

字段 类型 必填 说明
type "webhook" | "syslog" | "sentry" 目标类型。它决定了还会使用哪些该类型专属字段。
label string UI 中显示的名称。
enabled boolean 是否让该目标转发事件。
subscribedEvents string[] 要转发的事件名或事件组前缀(例如 n8n.auditn8n.workflow)。
anonymizeAuditMessages boolean 是否从 n8n.audit.* 事件中剥离敏感 payload 数据。
circuitBreaker object 失败保护设置。请参阅熔断器

Webhook#

字段 类型 必填 默认值 说明
url string (URL) - 接收事件 payload 的端点。
method "GET" | "POST" | "PUT" "POST" 投递时使用的 HTTP 方法。
sendQuery boolean false 是否发送查询参数。
specifyQuery "keypair" | "json" "keypair" sendQuerytrue 时,查询参数的格式。
queryParameters { parameters: [{ name, value }] } - 以键值对形式表示的查询参数。当 specifyQuery"keypair" 时使用。
jsonQuery string "" 以 JSON 字符串表示的查询参数。当 specifyQuery"json" 时使用。
sendHeaders boolean false 是否发送 headers。
specifyHeaders "keypair" | "json" "keypair" sendHeaderstrue 时,headers 的格式。
headerParameters { parameters: [{ name, value }] } - 以键值对形式表示的 headers。当 specifyHeaders"keypair" 时使用。
jsonHeaders string "" 以 JSON 字符串表示的 headers。当 specifyHeaders"json" 时使用。
options object {} 连接级选项。请参阅Webhook 选项

Webhook options Webhook 选项#

字段 类型 必填 默认值 说明
allowUnauthorizedCerts boolean false 忽略 SSL 证书校验。
queryParameterArrays "repeat" | "brackets" | "indices" "brackets" 查询参数中数组的编码格式。当 sendQuerytrue 时使用。
redirect { redirect: { followRedirects, maxRedirects } } { redirect: {} } 是否跟随 HTTP 重定向。followRedirects 默认值为 falsemaxRedirects 默认值为 21
proxy { proxy: { protocol, host, port } } { proxy: {} } HTTP/HTTPS 代理。protocol 可为 "https""http"host 默认为 "127.0.0.1"port 默认为 9000
timeout integer ≥ 1 (ms) 5000 在中止前等待服务器开始响应的时间,单位为毫秒。
socket { keepAlive, maxSockets, maxFreeSockets } { keepAlive: true, maxSockets: 50, maxFreeSockets: 5 } socket 池配置。maxSocketsmaxFreeSockets 都必须是大于等于 1 的整数。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
[
  {
    "type": "webhook",
    "label": "Audit",
    "subscribedEvents": ["n8n.audit", "n8n.workflow"],
    "anonymizeAuditMessages": true,
    "url": "https://hooks.example.com/n8n",
    "method": "POST",
    "sendHeaders": true,
    "specifyHeaders": "keypair",
    "headerParameters": {
      "parameters": [
        { "name": "Authorization", "value": "Bearer s3cret" }
      ]
    },
    "options": {
      "timeout": 5000,
      "redirect": { "redirect": { "followRedirects": true, "maxRedirects": 5 } }
    }
  }
]

Syslog#

字段 类型 必填 默认值 说明
host string - Syslog 服务器主机名或 IP。
port number 514 Syslog 服务器端口。
protocol "udp" | "tcp" | "tls" "udp" 传输协议。
tlsCa string protocol"tls" 时必填 "" TLS 连接使用的 PEM 格式 CA 证书。
facility number 16 Syslog facility 代码。允许值包括:0(Kernel)、1(User)、3(System)、13(Audit)、14(Alert)、1623(Local0 到 Local7)。
app_name string "n8n" 用作 syslog APP-NAME 的值。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[
  {
    "type": "syslog",
    "label": "SIEM",
    "subscribedEvents": ["n8n.audit", "n8n.workflow"],
    "host": "syslog.example.com",
    "port": 514,
    "protocol": "tls",
    "tlsCa": "-----BEGIN CERTIFICATE-----\n…\n-----END CERTIFICATE-----",
    "facility": 16,
    "app_name": "n8n"
  }
]

Sentry#

字段 类型 必填 默认值 说明
dsn string (URL) - Sentry DSN client key。
1
2
3
4
5
6
7
8
[
  {
    "type": "sentry",
    "label": "Sentry prod",
    "subscribedEvents": ["n8n.workflow"],
    "dsn": "https://[email protected]/1"
  }
]

Circuit breaker 熔断器#

熔断器会在连续失败达到阈值后,暂时停止向某个目标投递,从而避免继续给异常的下游服务施压。所有目标类型都支持此功能。

字段 类型 必填 默认值 说明
maxFailures integer ≥ 1 5 failureWindow 时间窗内的失败次数达到该值时,n8n 会停止向该目标发送请求。
failureWindow integer ≥ 100 (ms) 60000 用于统计失败次数的滑动时间窗。更早的失败会过期。
1
{ "circuitBreaker": { "maxFailures": 3, "failureWindow": 30000 } }

Complete example 完整示例#

 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
N8N_LOG_STREAMING_MANAGED_BY_ENV=true
N8N_LOG_STREAMING_DESTINATIONS='[
  {
    "type": "webhook",
    "label": "Ops webhook",
    "enabled": true,
    "subscribedEvents": ["n8n.workflow", "n8n.audit"],
    "anonymizeAuditMessages": true,
    "url": "https://hooks.example.com/n8n",
    "method": "POST",
    "sendHeaders": true,
    "specifyHeaders": "keypair",
    "headerParameters": {
      "parameters": [
        { "name": "Authorization", "value": "Bearer s3cret" }
      ]
    },
    "circuitBreaker": { "maxFailures": 5, "failureWindow": 60000 }
  },
  {
    "type": "sentry",
    "label": "Sentry prod",
    "subscribedEvents": ["n8n.workflow"],
    "dsn": "https://[email protected]/1"
  }
]'