Log streaming 日志流#
功能可用性
Log Streaming 日志流在所有企业版计划中可用。
日志流允许您将事件从 n8n 发送到您自己的日志工具。这使您能够在自己的警报和日志记录流程中管理 n8n 监控。
Set up log streaming 设置日志流#
要使用日志流,您必须添加一个流目的地。
- 导航到 Settings 设置 > Log Streaming 日志流。
- 选择 Add new destination 添加新目的地。
- 选择您的目的地类型。n8n 打开 New Event Destination 新事件目的地 模态框。
- 在 New Event Destination 新事件目的地 模态框中,输入事件目的地的配置信息。这些取决于您使用的目的地类型。
- 选择 Events 事件 以选择要流式传输的事件。
- 选择 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 可为 webhook、syslog 或 sentry,并附带该类型对应的配置。 |
Common fields 通用字段#
无论 type 是什么,每个目标都支持以下字段。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
type |
"webhook" | "syslog" | "sentry" |
是 | 目标类型。它决定了还会使用哪些该类型专属字段。 |
label |
string | 否 | UI 中显示的名称。 |
enabled |
boolean | 否 | 是否让该目标转发事件。 |
subscribedEvents |
string[] | 否 | 要转发的事件名或事件组前缀(例如 n8n.audit、n8n.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" |
当 sendQuery 为 true 时,查询参数的格式。 |
queryParameters |
{ parameters: [{ name, value }] } |
否 | - | 以键值对形式表示的查询参数。当 specifyQuery 为 "keypair" 时使用。 |
jsonQuery |
string | 否 | "" |
以 JSON 字符串表示的查询参数。当 specifyQuery 为 "json" 时使用。 |
sendHeaders |
boolean | 否 | false |
是否发送 headers。 |
specifyHeaders |
"keypair" | "json" |
否 | "keypair" |
当 sendHeaders 为 true 时,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" |
查询参数中数组的编码格式。当 sendQuery 为 true 时使用。 |
redirect |
{ redirect: { followRedirects, maxRedirects } } |
否 | { redirect: {} } |
是否跟随 HTTP 重定向。followRedirects 默认值为 false;maxRedirects 默认值为 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 池配置。maxSockets 和 maxFreeSockets 都必须是大于等于 1 的整数。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
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)、16 到 23(Local0 到 Local7)。 |
app_name |
string | 否 | "n8n" |
用作 syslog APP-NAME 的值。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Sentry#
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
dsn |
string (URL) | 是 | - | Sentry DSN client key。 |
1 2 3 4 5 6 7 8 | |
Circuit breaker 熔断器#
熔断器会在连续失败达到阈值后,暂时停止向某个目标投递,从而避免继续给异常的下游服务施压。所有目标类型都支持此功能。
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
maxFailures |
integer ≥ 1 | 否 | 5 |
当 failureWindow 时间窗内的失败次数达到该值时,n8n 会停止向该目标发送请求。 |
failureWindow |
integer ≥ 100 (ms) | 否 | 60000 |
用于统计失败次数的滑动时间窗。更早的失败会过期。 |
1 | |
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 | |