日志记录

在 GDS 库中,有三种类型的日志记录:调试日志记录、进度日志记录和提示或警告日志记录。

调试日志记录 提供有关系统中事件的信息。例如,当算法计算完成时,可能会记录使用的内存量和总运行时间。异常事件(当操作无法正常完成时)也会记录。调试日志信息有助于了解系统中的事件,尤其是在排查问题时。

进度日志记录 用于跟踪预计会花费很长时间的操作的进度。这包括图投影、算法计算和结果写入。

提示或警告日志记录 为用户提供与其查询相关的有用提示或警告。

所有日志条目都写入为 Neo4j 数据库配置的日志文件。有关配置 Neo4j 日志的更多信息,请参阅 Neo4j 操作手册

进度日志记录过程

GDS 库本身也跟踪进度。这使得除了查看日志文件外,还可以通过 Cypher 检查进度。要访问当前正在运行的任务(也称为作业)的进度信息,我们可以使用 list progress 过程:gds.listProgress。GDS 库中的任务被定义为正在运行的过程,例如算法或图加载过程。

list progress 过程有两种模式,具体取决于是否设置了 jobId 参数:首先,如果没有设置 jobId,该过程将为每个当前正在运行的任务生成一行。这可以看作是这些任务的摘要,例如,显示特定任务的总体进度。其次,如果设置了 jobId 参数,它将显示给定正在运行的作业的详细视图。详细视图将为作业在执行期间将执行的每个步骤或任务生成一行。它还将显示任务如何以树的形式结构化并打印每个单独任务的进度。

对于具有管理员权限的用户,此过程将列出所有用户的正在运行的任务。

语法

获取任务的进度
CALL gds.listProgress(jobId: String)
YIELD
  username,
  jobId,
  taskName,
  progress,
  progressBar,
  status,
  timeStarted,
  elapsedTime
表 1. 参数
名称 类型 默认值 可选 描述

jobId

字符串

""

正在运行的任务的 jobId。这将触发该特定任务的详细概述。

表 2. 结果
名称 类型 描述

username

字符串

启动正在运行的任务的用户。

jobId

字符串

jobId

正在运行的任务的生成标识符。

字符串

taskName

正在运行的任务的名称,即 Node2Vec

字符串

progress

以百分比值显示的作业进度。

字符串

progressBar

以 ASCII 进度条显示的作业进度。

字符串

status

作业的当前状态,即 RUNNINGCANCELED

timeStarted

LocalTime

任务启动的本地挂钟时间。

elapsedTime

Duration

某些类型的作业通常需要一段时间才能运行,例如图形投影和运行算法,在其配置参数映射中需要一个可选的 `jobId`。这可以使跟踪它们更容易,因为它们将在 `gds.listProgress` 结果中列在提供的 `jobId` 下。对于算法,请参阅 `jobId` 参数文档 以了解更多信息。

示例

假设我们刚刚启动了 `gds.node2vec.stream` 过程。

CALL gds.listProgress()
YIELD
  jobId,
  taskName,
  progress
表 3. 结果
jobId 正在运行的任务的生成标识符。 正在运行的任务的名称,即 Node2Vec

"d21bb4ca-e1e9-4a31-a487-42ac8c9c1a0d"

"Node2Vec"

"42%"

用户日志

提示和警告也可以通过 GDS 库进行跟踪,并可以通过 Cypher 查询访问。GDS 库会跟踪每个用户生成提示或警告的 100 个最新任务,并将它们存储在内存中。当用户调用过程 `gds.userLog` 时,会返回他们相应的生成的提示和警告列表。

语法

获取用户的提示和警告
CALL gds.userLog()
YIELD
  taskName,
  timeStarted,
  message
表 4. 结果
名称 类型 描述

正在运行的任务的生成标识符。

字符串

生成警告或提示的任务名称,例如 `WCC`。

作业的当前状态,即 RUNNINGCANCELED

timeStarted

LocalTime

消息

字符串

与任务相关的提示或警告。

示例

假设我们已经调用了 `gds.wcc.stream` 过程,并且设置了 `relationshipWeightProperty` 却没有指定 `threshold` 值。这会生成一个警告,可以通过用户日志访问,如下所示。

CALL gds.userLog()
YIELD
  taskName,
  message
表 5. 结果
正在运行的任务的生成标识符。 消息

"WCC"

"除非也设置了 `threshold`,否则指定 `relationshipWeightProperty` 不会有任何效果"