// Copyright 2019 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // syntax = "proto3"; package google.logging.v2; import "google/api/monitored_resource.proto"; import "google/logging/type/http_request.proto"; import "google/logging/type/log_severity.proto"; import "google/protobuf/any.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; import "google/rpc/status.proto"; import "google/api/annotations.proto"; option cc_enable_arenas = true; option csharp_namespace = "Google.Cloud.Logging.V2"; option go_package = "google.golang.org/genproto/googleapis/logging/v2;logging"; option java_multiple_files = true; option java_outer_classname = "LogEntryProto"; option java_package = "com.google.logging.v2"; option php_namespace = "Google\\Cloud\\Logging\\V2"; // An individual entry in a log. // message LogEntry { // Required. The resource name of the log to which this log entry belongs: // // "projects/[PROJECT_ID]/logs/[LOG_ID]" // "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]" // "billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]" // "folders/[FOLDER_ID]/logs/[LOG_ID]" // // A project number may optionally be used in place of PROJECT_ID. The project // number is translated to its corresponding PROJECT_ID internally and the // `log_name` field will contain PROJECT_ID in queries and exports. // // `[LOG_ID]` must be URL-encoded within `log_name`. Example: // `"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity"`. // `[LOG_ID]` must be less than 512 characters long and can only include the // following characters: upper and lower case alphanumeric characters, // forward-slash, underscore, hyphen, and period. // // For backward compatibility, if `log_name` begins with a forward-slash, such // as `/projects/...`, then the log entry is ingested as usual but the // forward-slash is removed. Listing the log entry will not show the leading // slash and filtering for a log name with a leading slash will never return // any results. string log_name = 12; // Required. The monitored resource that produced this log entry. // // Example: a log entry that reports a database error would be associated with // the monitored resource designating the particular database that reported // the error. google.api.MonitoredResource resource = 8; // Optional. The log entry payload, which can be one of multiple types. oneof payload { // The log entry payload, represented as a protocol buffer. Some Google // Cloud Platform services use this field for their log entry payloads. // // The following protocol buffer types are supported; user-defined types // are not supported: // // "type.googleapis.com/google.cloud.audit.AuditLog" // "type.googleapis.com/google.appengine.logging.v1.RequestLog" google.protobuf.Any proto_payload = 2; // The log entry payload, represented as a Unicode string (UTF-8). string text_payload = 3; // The log entry payload, represented as a structure that is // expressed as a JSON object. google.protobuf.Struct json_payload = 6; } // Optional. The time the event described by the log entry occurred. This // time is used to compute the log entry's age and to enforce the logs // retention period. If this field is omitted in a new log entry, then Logging // assigns it the current time. Timestamps have nanosecond accuracy, but // trailing zeros in the fractional seconds might be omitted when the // timestamp is displayed. // // Incoming log entries should have timestamps that are no more than the [logs // retention period](/logging/quotas) in the past, and no more than 24 hours // in the future. Log entries outside those time boundaries will not be // available when calling `entries.list`, but those log entries can still be // [exported with LogSinks](/logging/docs/api/tasks/exporting-logs). google.protobuf.Timestamp timestamp = 9; // Output only. The time the log entry was received by Logging. google.protobuf.Timestamp receive_timestamp = 24; // Optional. The severity of the log entry. The default value is // `LogSeverity.DEFAULT`. google.logging.type.LogSeverity severity = 10; // Optional. A unique identifier for the log entry. If you provide a value, // then Logging considers other log entries in the same project, with the same // `timestamp`, and with the same `insert_id` to be duplicates which can be // removed. If omitted in new log entries, then Logging assigns its own unique // identifier. The `insert_id` is also used to order log entries that have the // same `timestamp` value. string insert_id = 4; // Optional. Information about the HTTP request associated with this log // entry, if applicable. google.logging.type.HttpRequest http_request = 7; // Optional. A set of user-defined (key, value) data that provides additional // information about the log entry. map labels = 11; // Deprecated. Output only. Additional metadata about the monitored resource. // // Only `k8s_container`, `k8s_pod`, and `k8s_node` MonitoredResources have // this field populated for GKE versions older than 1.12.6. For GKE versions // 1.12.6 and above, the `metadata` field has been deprecated. The Kubernetes // pod labels that used to be in `metadata.userLabels` will now be present in // the `labels` field with a key prefix of `k8s-pod/`. The Stackdriver system // labels that were present in the `metadata.systemLabels` field will no // longer be available in the LogEntry. google.api.MonitoredResourceMetadata metadata = 25 [deprecated = true]; // Optional. Information about an operation associated with the log entry, if // applicable. LogEntryOperation operation = 15; // Optional. Resource name of the trace associated with the log entry, if any. // If it contains a relative resource name, the name is assumed to be relative // to `//tracing.googleapis.com`. Example: // `projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824` string trace = 22; // Optional. The span ID within the trace associated with the log entry. // // For Trace spans, this is the same format that the Trace API v2 uses: a // 16-character hexadecimal encoding of an 8-byte array, such as // "000000000000004a". string span_id = 27; // Optional. The sampling decision of the trace associated with the log entry. // // True means that the trace resource name in the `trace` field was sampled // for storage in a trace backend. False means that the trace was not sampled // for storage when this log entry was written, or the sampling decision was // unknown at the time. A non-sampled `trace` value is still useful as a // request correlation identifier. The default is False. bool trace_sampled = 30; // Optional. Source code location information associated with the log entry, // if any. LogEntrySourceLocation source_location = 23; } // Additional information about a potentially long-running operation with which // a log entry is associated. message LogEntryOperation { // Optional. An arbitrary operation identifier. Log entries with the same // identifier are assumed to be part of the same operation. string id = 1; // Optional. An arbitrary producer identifier. The combination of `id` and // `producer` must be globally unique. Examples for `producer`: // `"MyDivision.MyBigCompany.com"`, `"github.com/MyProject/MyApplication"`. string producer = 2; // Optional. Set this to True if this is the first log entry in the operation. bool first = 3; // Optional. Set this to True if this is the last log entry in the operation. bool last = 4; } // Additional information about the source code location that produced the log // entry. message LogEntrySourceLocation { // Optional. Source file name. Depending on the runtime environment, this // might be a simple name or a fully-qualified name. string file = 1; // Optional. Line within the source file. 1-based; 0 indicates no line number // available. int64 line = 2; // Optional. Human-readable name of the function or method being invoked, with // optional context such as the class or package name. This information may be // used in contexts such as the logs viewer, where a file and line number are // less meaningful. The format can vary by language. For example: // `qual.if.ied.Class.method` (Java), `dir/package.func` (Go), `function` // (Python). string function = 3; }