跳转至

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。使用工作进程时应设置此值。
 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 会产生错误。此功能将在将来的版本中实现。

此页面是否
💬 微信

🚀 与作者交流

关注公众号
n8n实战笔记公众号
n8n实战笔记
📚 教程 💡 案例 🔧 技巧
添加微信
添加作者微信
1对1 专业指导
⚡ 快答 🎯 定制 🚀 支持