Skip to content

n8n 中的日志记录#

日志记录是调试的重要功能。n8n 使用 winston 日志记录库。

日志流

n8n 自托管企业版包含日志流,除了本文档中描述的日志记录选项之外。

设置#

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

配置文件中的设置 使用环境变量 描述
n8n.log.level N8N_LOG_LEVEL 日志输出级别。可用选项(从最低到最高级别)为 error、warn、info 和 debug。默认值为 info。您可以在此处了解有关这些选项的更多信息。
n8n.log.output N8N_LOG_OUTPUT 日志输出位置。可用选项为 consolefile。可以使用逗号 (,) 分隔多个值。默认使用 console
n8n.log.file.location N8N_LOG_FILE_LOCATION 日志文件位置,仅在日志输出设置为文件时使用。默认情况下,使用 <n8nFolderPath>/logs/n8n.log
n8n.log.file.maxsize N8N_LOG_FILE_SIZE_MAX 每个日志文件的最大大小(以 MB 为单位)。默认情况下,n8n 使用 16 MB。
n8n.log.file.maxcount N8N_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_MAXSIZE=50

# 将要保留的日志文件的最大数量设置为 60
export N8N_LOG_FILE_MAXCOUNT=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';

// 触发器函数的信息级日志记录,以工作流名称和工作流 ID 作为其他元数据属性

Logger.info(`为工作流 "${workflow.name}" 启动轮询触发器`, {workflowName: workflow.name, workflowId: workflow.id});

创建新日志记录器时,需要记住的一些有用标准是:

  • 制作尽可能人性化的日志消息。例如,始终将名称用引号括起来。
  • 在日志消息和元数据中复制信息,如上面示例中的工作流名称,这很有用,因为消息更容易搜索,元数据使过滤更容易。
  • 在所有日志中包含多个 ID(例如,executionIdworkflowIdsessionId)。
  • 使用节点类型而不是节点名称(或两者),因为这更一致,因此更容易搜索。

前端日志#

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