本页面介绍了如何使用 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布尔值 如果值为 True,则表明在存储批量操作作业完成后,系统对对象应用了临时保全。有效值为True或False。PutObjectHold.eventBasedHoldAfter布尔值 如果值为 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键值对映射。此字段包含对对象设置或修改的任何用户定义的元数据。它允许灵活存储其他元数据。