本页面介绍了如何使用 Cloud Logging 配置和查看存储批量操作日志。存储批量操作作业可以配置为为每个转换作业生成 Cloud Logging 日志条目。每个日志条目对应于一次对象转换尝试。
存储批量操作支持将日志记录到 Cloud Logging 和 Cloud Storage Cloud Audit Logs。虽然这两个选项都能捕获存储批量操作,但我们建议使用 Cloud Logging。Cloud Logging 提供了一个集中式平台,用于进行日志分析、实时监控和高级过滤,并为管理和了解批量操作活动提供可靠的解决方案。
准备工作
验证您是否有权访问 Cloud Logging。如需使用 Cloud Logging,我们建议授予 Logs Viewer (roles/logging.viewer)
Identity and Access Management 角色。Logs Viewer (roles/logging.viewer)
Identity and Access Management 角色提供查看 Cloud Logging 数据所需的 Identity and Access Management 权限。如需详细了解 Logging 访问权限,请参阅使用 IAM 进行访问权限控制。
如需验证和授予 IAM 权限,请完成以下步骤:
了解日志记录详细信息
启用日志记录后,存储批量操作会捕获以下详细信息:
可记录的操作:可记录的操作值始终为
transform
。可记录的状态:对于每项操作,您可以选择记录以下一种或两种状态:
SUCCEEDED
:操作成功。FAILED
:操作失败。
启用日志记录
如需启用日志记录,请指定要记录的操作和状态。
命令行
使用 gcloud
storage batch-operations jobs create
创建存储批量操作作业时,请使用 --log-actions
和 --log-action-states
标志启用日志记录。
gcloud storage batch-operations jobs create JOB_NAME \ --manifest-location=MANIFEST_LOCATION \ --delete-object \ --log-actions=transform \ --log-action-states=LOG_ACTION_STATES
其中:
JOB_NAME
是您要为作业指定的名称。例如my-job
。MANIFEST_LOCATION
是清单的位置。例如gs://my-bucket/manifest.csv
。LOG_ACTION_STATES
是要记录的状态列表,以英文逗号分隔。例如succeeded,failed
。
REST API
将 Create a storage batch operations
job
与 LoggingConfig
结合使用。
{ "loggingConfig": { "logActions": ["TRANSFORM"], "logActionStates": ["LOG_ACTION_STATES"], } }
其中:
LOG_ACTION_STATES
是要记录的状态列表,以英文逗号分隔。例如 "SUCCEEDED","FAILED"
。
查看日志
如需查看存储批量操作日志,请执行以下操作:
控制台
前往 Google Cloud 导航菜单 menu,然后选择 Logging > Logs Explorer:<br\></br\>
选择一个 Google Cloud 项目。
在升级菜单中,从旧版日志查看器切换到日志浏览器。
如需过滤日志以仅显示存储批量操作条目,请在查询字段中输入
storage_batch_operations_job
,然后点击运行查询。在查询结果窗格中,点击修改时间以更改返回结果的时间段。
如需详细了解如何使用 Logs Explorer,请参阅使用 Logs Explorer。
命令行
如需使用 gcloud CLI 搜索存储批量操作日志,请使用 gcloud logging read
命令。
指定过滤条件以将结果限制为存储批量操作日志。
gcloud logging read "resource.type=storage_batch_operations_job"
REST API
使用 entries.list
Cloud Logging API 方法。
如需过滤结果以仅包含与存储批量操作相关的条目,请使用 filter
字段。以下是 JSON 请求对象示例:
{
"resourceNames":
[
"projects/my-project-name"
],
"orderBy": "timestamp desc",
"filter": "resource.type=\"storage_batch_operations_job\""
}
其中:
my-project-name
是项目的名称。
存储批量操作日志格式
所有存储批量操作特有的字段都包含在 jsonPayload
对象中。虽然 jsonPayload
的确切内容因作业类型而异,但所有 TransformActivityLog
条目都具有共同的结构。本部分先概述了常见的日志字段,然后详细介绍了操作特有的字段。
常见日志字段
所有日志中都会显示以下字段:
jsonPayload: { "@type": "type.googleapis.com/google.cloud.storagebatchoperations.logging.TransformActivityLog", "completeTime": "YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ", "status": { "errorMessage": "String indicating error", "errorType": "ENUM_VALUE", "statusCode": "ENUM_VALUE" }, "logName": "projects/PROJECT_ID/logs/storagebatchoperations.googleapis.com%2Ftransform_activity", "receiveTimestamp": "YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ", "resource": { "labels": { "location":"us-central1", "job_id": "BATCH_JOB_ID", "resource_container": "RESOURCE_CONTAINER", // ... other labels }, "type": "storagebatchoperations.googleapis.com/Job" }, // Operation-specific details will be nested here (for example, // "DeleteObject", "PutObjectHold", "RewriteObject", "PutMetadata") // Each operation-specific object will also contain the following // object: "objectMetadataBefore": { // "gcsObject": { // "bucket": "BUCKET_NAME", // "generation": "GENERATION_NUMBER", // "objectKey": "OBJECT_PATH" // } // } }
下表介绍了每个常见日志字段:
常见日志字段 类型 说明 @type
字符串 指定日志条目载荷的类型,并指明日志表示存储批量操作的 TransformActivityLog
。completeTime
时间戳 操作完成时符合 ISO 8601 标准的时间戳。 status
对象 提供有关批量操作活动结果的信息。 status.errorMessage
字符串 如果操作失败,则返回错误消息。 仅当 status.statusCode
值不是OK
时,才会显示此错误消息。status.errorType
字符串 错误类型。仅当 status.statusCode
值不是OK
时,才会显示此错误类型。status.statusCode
字符串 操作的状态代码。如果值为 OK
,则表示操作成功;任何其他值都表示失败。logName
字符串 日志的完整资源名称,指明项目和日志流。 receiveTimestamp
时间戳 日志记录系统接收日志条目时的时间戳。 resource
对象 生成日志条目的资源的相关信息。 resource.labels
对象 提供有关资源的其他标识信息的键值对。 resource.type
字符串 生成日志的资源类型。 objectMetadataBefore
对象 包含尝试批量操作之前的对象的元数据。 objectMetadataBefore.gcsObject
对象 有关对象的详细信息。 objectMetadataBefore.gcsObject.bucket
字符串 对象所在存储桶的名称。 objectMetadataBefore.gcsObject.generation
字符串 操作之前的对象的世代编号。 objectMetadataBefore.gcsObject.objectKey
字符串 相应对象在存储桶中的完整路径。 操作特有的
jsonPayload
内容不同批量操作的日志条目之间的区别在于嵌套在
jsonPayload
中的顶级对象。在给定的日志条目中,只有以下对象之一可用,具体取决于执行的特定批量操作:删除对象 (
DeleteObject
)jsonPayload: { "DeleteObject": { "objectMetadataBefore": { "gcsObject": { "bucket": "test-bucket", "generation": "1678912345678901", "objectKey": "test_object.txt" } } } }
保全对象 (
PutObjectHold
)jsonPayload: { "PutObjectHold": { "objectMetadataBefore": { "gcsObject": { "bucket": "test-bucket", "generation": "1678912345678901", "objectKey": "test_object.txt" } }, "temporaryHoldAfter": True, "eventBasedHoldAfter": True } }
重写对象 (
RewriteObject
)jsonPayload: { "RewriteObject": { "objectMetadataBefore": { "gcsObject": { "bucket": "test-bucket", "generation": "1678912345678901", "objectKey": "test_object.txt" } }, "kmsKeyVersionAfter": "projects/my-gcp-project/locations/us-central1/keyRings/my-keyring-01/cryptoKeys/my-encryption-key/cryptoKeyVersions/1" } }
放置元数据 (
PutMetadata
)jsonPayload: { "PutMetadata": { "objectMetadataBefore": { "gcsObject": { "bucket": "test-bucket", "generation": "1678912345678901", "objectKey": "test_object.txt" } }, "content_disposition_after": "attachment; filename=\"report_final.pdf\"", "content_encoding_after": "gzip", "content_language_after": "en-US", "content_type_after": "application/pdf", "cache_control_after": "public, max-age=3600", "custom_time_after": "2025-06-27T10:00:00Z", "custom_metadata_after": { "project": "marketing", "version": "2.0", "approvedBy": "Admin" } } }
下表介绍了操作特有的日志字段:
操作特有的日志字段 类型 说明 PutObjectHold
对象 表明对对象的保全操作。 PutObjectHold.temporaryHoldAfter
Boolean 如果值为 True
,则表明在存储批量操作作业完成后,系统对对象应用了临时保全。有效值为True
或False
。PutObjectHold.eventBasedHoldAfter
Boolean 如果值为 True
,则表明在存储批量操作作业完成后,系统已对对象应用了基于事件的保全。有效值为True
或False
。RewriteObject
对象 表明对对象的重写操作。 RewriteObject.kmsKeyVersionAfter
字符串 重写作业完成后使用的 Cloud Key Management Service 密钥版本。如果对象的加密密钥因重写而发生更改,则会填充 kmsKeyVersionAfter
字段。 这是一个可选字段,这意味着如果重写后 Cloud KMS 密钥版本保持不变,则可能不会显示此字段。PutMetadata
对象 表明对对象的元数据更新操作。 PutMetadata.content_disposition_after
字符串 指定 PutMetadata
作业完成后Content-Disposition
标头的值。这是一个可选字段,仅在设置或修改了内容处置时才会填充。PutMetadata.content_encoding_after
字符串 指定 PutMetadata
作业完成后Content-Encoding
标头的值。这是一个可选字段,仅在设置或修改内容编码时才会填充。PutMetadata.content_language_after
字符串 指定 PutMetadata
作业完成后Content-Language
标头的值。这是一个可选字段,仅在设置或修改内容语言时才会填充。PutMetadata.content_type_after
字符串 指定 PutMetadata
作业完成后Content-Type
标头的值。这是一个可选字段,仅在设置或修改内容类型时才会填充。PutMetadata.cache_control_after
字符串 指定 PutMetadata
作业完成后Cache-Control
标头的值。这是一个可选字段,仅在设置或修改缓存控制时才会填充。PutMetadata.custom_time_after
字符串 指定 PutMetadata
作业完成后Custom-Time
标头的值。这是一个可选字段,仅在设置或修改自定义时间时才会填充。PutMetadata.custom_metadata_after
映射(键:字符串,值:字符串) 包含转换后的 Custom- Metadata
键值对映射。此字段包含对对象设置或修改的任何用户定义的元数据。它允许灵活存储其他元数据。