查看 Cloud Logging 中的错误日志

本页面介绍如何在 Google Cloud 的运维套件中查看受支持的请求类型的日志。

日志

以下各个请求中触发的错误都会记录到 Cloud Logging 中。

如果 Pub/Sub 消息无法发布到 Pub/Sub,则也会记录错误。如需了解详情,请参阅对 Pub/Sub 通知进行问题排查

Logging 会自动运行,因此无需启用。如需为一个或所有受监控的资源停用 Cloud Logging,请参阅日志排除

查看日志

如需查看所有日志,请转到日志查看器。如需查看存在错误状态的操作的日志,请在医疗保健浏览器的操作标签页上点击操作的详细信息图标,然后点击在 Stackdriver 中查看详情

过滤日志

您可以按存储区类型(DICOM 或 FHIR 存储区)、地区和数据集过滤日志。

例如,如需查看 FHIR 存储区的日志,请点击按标签过滤或搜索文字下第一个列表中的 Healthcare FHIR Store。您还可以按资源类型进行搜索。例如,搜索 healthcare_dicom_store 会显示为 resource.type 设置为 healthcare_dicom_store 的操作生成的所有日志。

系统为日志字段强制执行 UTF-8 编码。非 UTF-8 字符将被替换为问号。

如需详细了解日志查看器,请参阅查看日志

使用 Cloud Logging 查找错误事件

您还可以使用 Cloud Logging 查找导致错误的事件的审核日志。如需在审核日志中查找错误事件,请执行以下操作:

  1. 在 Cloud Logging 中搜索导致该事件的操作。

  2. 使用操作的日志详细信息,重新运行特定命令。

  3. 查看相应事件的审核日志。如需详细了解审核日志,请参阅查看 Cloud Audit Logs

记录的内容

Cloud Healthcare API 日志条目包含以下类型的用于调试请求的信息:

  • 一般信息,例如严重性、项目 ID、项目编号和时间戳。
  • jsonPayload 包含条目的实际正文。此字段包含错误代码、错误消息以及其导入触发了错误的源文件的名称。
  • operation 包含产生错误的操作的类型和 ID。
  • resource 包含错误涉及的位置、数据集和 DICOM 或 FHIR 存储区。

如果错误数量超过阈值,则 Cloud Logging 中将显示有限数量的错误。系统会根据输入的大小动态计算阈值。

日志的存储位置

Google Cloud 的运维套件不是地区化产品。写入 Google Cloud 的运维套件的日志可以存储在与 DICOM 和 FHIR 存储区不同的地区中。

DICOM 导入日志条目示例

以下示例日志条目显示了在尝试将 gs://DICOM_FILENAME.dcm 导入projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID 时发生的 empty DICOM instance found 错误。

 jsonPayload: {
  @type:  "type.googleapis.com/google.cloud.healthcare.logging.ImportDicomLogEntry"
  error: {
   code:  3
   message:  "empty DICOM instance found"
  }
  source:  "gs://DICOM_FILENAME.dcm"
 }
 logName:  "projects/PROJECT_ID/logs/healthcare.googleapis.com%2Foperations"
 operation: {
  id:  "PROJECT_ID"
  producer:  "import_dicom"
 }
 receiveTimestamp:  "TIMESTAMP"
 resource: {
  labels: {
   dataset_id:  "DATASET_ID"
   dicom_store_id:  "DICOM_STORE_ID"
   location:  "LOCATION"
   project_id:  "PROJECT_ID"
  }
  type:  "healthcare_dicom_store"
 }
 severity:  "ERROR"
 timestamp:  "TIMESTAMP"

FHIR 导入日志条目示例

以下示例日志条目显示了在尝试将 gs://FHIR_FILENAME.ndjson 导入 projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStore/FHIR_STORE_ID 时发生的 cannot import resource 错误。

 jsonPayload: {
  @type:  "type.googleapis.com/google.cloud.healthcare.logging.ImportFhirLogEntry"
  error: {
   code:  3
   message:  "cannot import resource Patient/PATIENT_ID, conflicting resource already exists"
  }
  source:  "gs://FHIR_FILENAME.ndjson"
 }
 logName:  "projects/PROJECT_ID/logs/healthcare.googleapis.com%2Foperations"
 operation: {
  id:  "PROJECT_ID"
  producer:  "import_fhir"
 }
 receiveTimestamp:  "TIMESTAMP"
 resource: {
  labels: {
   dataset_id:  "DATASET_ID"
   fhir_store_id:  "FHIR_STORE_ID"
   location:  "LOCATION"
   project_id:  "PROJECT_ID"
  }
  type:  "healthcare_fhir_store"
 }
 severity:  "ERROR"
 timestamp:  "TIMESTAMP"

DICOM 去标识化日志条目示例

以下示例日志条目显示了在尝试对数据集 projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID 中的 DICOM 实例INSTANCE_ID 进行去标识化时发生的 cannot de-identify dicom instance 错误。

 jsonPayload: {
  @type:  "type.googleapis.com/google.cloud.healthcare.logging.DeidentifyLogEntry"
  error: {
   code:  2
   message:  "Failed to process instance INSTANCE_ID"
  }
  resourceName:  "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID"
 }
 logName:  "projects/PROJECT_ID/logs/healthcare.googleapis.com%2Fdeidentify_dataset"
 operation: {
  id:  "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
  producer:  "healthcare.googleapis.com/DeidentifyDataset"
 }
 receiveTimestamp:  "TIMESTAMP"
 resource: {
  labels: {
   dataset_id:  "DATASET_ID"
   location:  "LOCATION"
   project_id:  "PROJECT_ID"
  }
  type:  "healthcare_dataset"
 }
 severity:  "ERROR"
 timestamp:  "TIMESTAMP"

后续步骤