N8N中文教程
部署托管/Logging_and_monitoring

n8n 中的日志记录#

日志记录是调试过程中的一个重要功能。n8n 使用 winston 日志库。 日志流 n8n 自托管企业版除了本文档中描述的日志选项外,还支持日志流(Log streaming)。

配置#

要在 n8n 中配置日志记录,你需要设置以下环境变量(你也可以在配置文件中设置这些值)

配置文件中的设置使用环境变量说明
n8n.log.levelN8N_LOG_LEVEL日志输出级别。可用选项按级别从低到高分别为 error、warn、info 和 debug。默认值为 info。你可以在此处了解这些选项的更多细节:日志级别。
n8n.log.outputN8N_LOG_OUTPUT日志输出位置。可用选项为 consolefile。多个值可以用逗号 (,) 分隔。默认使用 console
n8n.log.file.locationN8N_LOG_FILE_LOCATION日志文件的存储路径,仅在日志输出设置为 file 时生效。默认路径为 <n8nFolderPath>/logs/n8n.log
n8n.log.file.fileSizeMaxN8N_LOG_FILE_SIZE_MAX每个日志文件的最大大小(单位 MB)。默认情况下,n8n 使用 16 MB。
n8n.log.file.fileCountMaxN8N_LOG_FILE_COUNT_MAX最多保留的日志文件数量。默认值为 100。在使用 worker 时应设置此值。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14

| ```

将日志级别设置为 'debug'

export N8N_LOG_LEVEL=debug

将日志输出设置为控制台和日志文件

export N8N_LOG_OUTPUT=console,file

设置日志文件的保存路径

export N8N_LOG_FILE_LOCATION=/home/jim/n8n/logs/n8n.log

设置每个日志文件最大为 50 MB

export N8N_LOG_FILE_SIZE_MAX=50

设置最多保留 60 个日志文件

export N8N_LOG_FILE_COUNT_MAX=60


---|---
### 日志级别#
n8n 使用标准的日志级别来报告:
  * `silent`:完全不输出任何内容
  * `error`:仅输出错误信息
  * `warn`:输出错误和警告信息
  * `info`:包含有关运行进度的有用信息
  * `debug`:最详细的输出级别。n8n 会输出大量信息以帮助你排查问题。

## 开发#
在开发过程中,添加日志消息是一种良好的实践,有助于调试错误。要为开发配置日志记录,请遵循以下指南。

### 实现细节#
n8n 使用位于 `workflow` 包中的 `LoggerProxy` 类。通过传入一个 `Logger` 实例调用 `LoggerProxy.init()` 方法,可在使用前完成类的初始化。

该初始化过程仅执行一次。`start.ts` 文件已经为你完成了这一过程。如果你从零开始创建一个新的命令,则需要手动初始化 `LoggerProxy` 类。

一旦在 `cli` 包中创建了 `Logger` 的实现,就可以通过导出模块中的 `getInstance` 便捷方法获取其实例。

查看 start.ts 文件,了解更多关于此流程的工作方式。

### 添加日志#
当项目中完成 `LoggerProxy` 类的初始化后,你可以在任意其他文件中导入并添加日志。

所有日志级别都提供了便捷方法,因此可以根据需要随时以 `Logger.<logLevel>('<message>', ...meta)` 格式添加新日志,其中 `meta` 表示除 `message` 外所需的任何附加属性。

在上面的例子中,我们使用了前述描述的标准日志级别。`message` 参数是一个字符串,而 `meta` 是一个数据对象。

1 2 3 4 5 6 7 8 9

| ```
// 需要导入 LoggerProxy,我们将其重命名为 Logger 以便使用

import {
LoggerProxy as Logger
} from 'n8n-workflow';

// 记录触发器函数的 info 级别日志,附加 workflow 名称和 ID 作为元数据

Logger.info(`Polling trigger initiated for workflow "${workflow.name}"`, {workflowName: workflow.name, workflowId: workflow.id});

---|---

创建新日志时,应牢记一些有用的规范:

  • 尽量使日志消息具备良好的可读性。例如,始终将名称用引号括起来。
  • 在日志消息和元数据中重复信息(如上述示例中的 workflow 名称)是有用的,因为消息更易于搜索,而元数据便于过滤。
  • 在所有日志中包含多个 ID(例如 executionIdworkflowIdsessionId)。
  • 使用节点类型(node types)而非节点名称(或同时使用两者),因为类型更加一致,也更容易搜索。

前端日志#

目前,前端日志尚不可用。在 editor-ui 包中使用 LoggerLoggerProxy 会导致错误。此功能将在未来的版本中实现。