<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="logging_v2.html">Cloud Logging API</a> . <a href="logging_v2.entries.html">entries</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists log entries. Use this method to retrieve log entries that originated from a project/folder/organization/billing account. For ways to export log entries, see Exporting Logs (https://cloud.google.com/logging/docs/export).</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#write">write(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Writes log entries to Logging. This API method is the only way to send log entries to Logging. This method is used, directly or indirectly, by the Logging agent (fluentd) and all logging libraries configured to use Logging. A single request may contain log entries for a maximum of 1000 different resources (projects, organizations, billing accounts or folders)</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(body=None, x__xgafv=None)</code>
  <pre>Lists log entries. Use this method to retrieve log entries that originated from a project/folder/organization/billing account. For ways to export log entries, see Exporting Logs (https://cloud.google.com/logging/docs/export).

Args:
  body: object, The request body.
    The object takes the form of:

{ # The parameters to ListLogEntries.
    &quot;orderBy&quot;: &quot;A String&quot;, # Optional. How the results should be sorted. Presently, the only permitted values are &quot;timestamp asc&quot; (default) and &quot;timestamp desc&quot;. The first option returns entries in order of increasing values of LogEntry.timestamp (oldest first), and the second option returns entries in order of decreasing timestamps (newest first). Entries with equal timestamps are returned in order of their insert_id values.
    &quot;resourceNames&quot;: [ # Required. Names of one or more parent resources from which to retrieve log entries:
        # &quot;projects/[PROJECT_ID]&quot;
        # &quot;organizations/[ORGANIZATION_ID]&quot;
        # &quot;billingAccounts/[BILLING_ACCOUNT_ID]&quot;
        # &quot;folders/[FOLDER_ID]&quot;
        # Projects listed in the project_ids field are added to this list.
      &quot;A String&quot;,
    ],
    &quot;projectIds&quot;: [ # Optional. Deprecated. Use resource_names instead. One or more project identifiers or project numbers from which to retrieve log entries. Example: &quot;my-project-1A&quot;.
      &quot;A String&quot;,
    ],
    &quot;filter&quot;: &quot;A String&quot;, # Optional. A filter that chooses which log entries to return. See Advanced Logs Queries (https://cloud.google.com/logging/docs/view/advanced-queries). Only log entries that match the filter are returned. An empty filter matches all log entries in the resources listed in resource_names. Referencing a parent resource that is not listed in resource_names will cause the filter to return no results. The maximum length of the filter is 20000 characters.
    &quot;pageToken&quot;: &quot;A String&quot;, # Optional. If present, then retrieve the next batch of results from the preceding call to this method. page_token must be the value of next_page_token from the previous response. The values of other method parameters should be identical to those in the previous call.
    &quot;pageSize&quot;: 42, # Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of next_page_token in the response indicates that more results might be available.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Result returned from ListLogEntries.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.If a value for next_page_token appears and the entries field is empty, it means that the search found no log entries so far but it did not have time to search all the possible log entries. Retry the method with this value for page_token to continue the search. Alternatively, consider speeding up the search by changing your filter to specify a single log name or resource type, or to narrow the time range of the search.
    &quot;entries&quot;: [ # A list of log entries. If entries is empty, nextPageToken may still be returned, indicating that more entries may exist. See nextPageToken for more information.
      { # An individual entry in a log.
        &quot;trace&quot;: &quot;A String&quot;, # 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
        &quot;labels&quot;: { # Optional. A set of user-defined (key, value) data that provides additional information about the log entry.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;severity&quot;: &quot;A String&quot;, # Optional. The severity of the log entry. The default value is LogSeverity.DEFAULT.
        &quot;sourceLocation&quot;: { # Additional information about the source code location that produced the log entry. # Optional. Source code location information associated with the log entry, if any.
          &quot;line&quot;: &quot;A String&quot;, # Optional. Line within the source file. 1-based; 0 indicates no line number available.
          &quot;file&quot;: &quot;A String&quot;, # Optional. Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name.
          &quot;function&quot;: &quot;A String&quot;, # 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).
        },
        &quot;spanId&quot;: &quot;A String&quot;, # 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.
        &quot;traceSampled&quot;: True or False, # 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.
        &quot;receiveTimestamp&quot;: &quot;A String&quot;, # Output only. The time the log entry was received by Logging.
        &quot;timestamp&quot;: &quot;A String&quot;, # Optional. The time the event described by the log entry occurred. This time is used to compute the log entry&#x27;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 must have timestamps that don&#x27;t exceed the logs retention period (https://cloud.google.com/logging/quotas#logs_retention_periods) in the past, and that don&#x27;t exceed 24 hours in the future. Log entries outside those time boundaries aren&#x27;t ingested by Logging.
        &quot;logName&quot;: &quot;A String&quot;, # Required. The resource name of the log to which this log entry belongs:
            # &quot;projects/[PROJECT_ID]/logs/[LOG_ID]&quot;
            # &quot;organizations/[ORGANIZATION_ID]/logs/[LOG_ID]&quot;
            # &quot;billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]&quot;
            # &quot;folders/[FOLDER_ID]/logs/[LOG_ID]&quot;
            # A project number may 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: &quot;organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity&quot;. [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.
        &quot;httpRequest&quot;: { # A common proto for logging HTTP requests. Only contains semantics defined by the HTTP specification. Product-specific logging information MUST be defined in a separate message. # Optional. Information about the HTTP request associated with this log entry, if applicable.
          &quot;status&quot;: 42, # The response code indicating the status of response. Examples: 200, 404.
          &quot;referer&quot;: &quot;A String&quot;, # The referer URL of the request, as defined in HTTP/1.1 Header Field Definitions (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).
          &quot;latency&quot;: &quot;A String&quot;, # The request processing latency on the server, from the time the request was received until the response was sent.
          &quot;userAgent&quot;: &quot;A String&quot;, # The user agent sent by the client. Example: &quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET
              # CLR 1.0.3705)&quot;.
          &quot;cacheFillBytes&quot;: &quot;A String&quot;, # The number of HTTP response bytes inserted into cache. Set only when a cache fill was attempted.
          &quot;requestMethod&quot;: &quot;A String&quot;, # The request method. Examples: &quot;GET&quot;, &quot;HEAD&quot;, &quot;PUT&quot;, &quot;POST&quot;.
          &quot;protocol&quot;: &quot;A String&quot;, # Protocol used for the request. Examples: &quot;HTTP/1.1&quot;, &quot;HTTP/2&quot;, &quot;websocket&quot;
          &quot;responseSize&quot;: &quot;A String&quot;, # The size of the HTTP response message sent back to the client, in bytes, including the response headers and the response body.
          &quot;requestSize&quot;: &quot;A String&quot;, # The size of the HTTP request message in bytes, including the request headers and the request body.
          &quot;requestUrl&quot;: &quot;A String&quot;, # The scheme (http, https), the host name, the path and the query portion of the URL that was requested. Example: &quot;http://example.com/some/info?color=red&quot;.
          &quot;remoteIp&quot;: &quot;A String&quot;, # The IP address (IPv4 or IPv6) of the client that issued the HTTP request. Examples: &quot;192.168.1.1&quot;, &quot;FE80::0202:B3FF:FE1E:8329&quot;.
          &quot;serverIp&quot;: &quot;A String&quot;, # The IP address (IPv4 or IPv6) of the origin server that the request was sent to.
          &quot;cacheLookup&quot;: True or False, # Whether or not a cache lookup was attempted.
          &quot;cacheHit&quot;: True or False, # Whether or not an entity was served from cache (with or without validation).
          &quot;cacheValidatedWithOriginServer&quot;: True or False, # Whether or not the response was validated with the origin server before being served from cache. This field is only meaningful if cache_hit is True.
        },
        &quot;resource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: # 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.
            # { &quot;type&quot;: &quot;gce_instance&quot;,
            #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
            #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
          &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels &quot;project_id&quot;, &quot;instance_id&quot;, and &quot;zone&quot;.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance.
        },
        &quot;jsonPayload&quot;: { # The log entry payload, represented as a structure that is expressed as a JSON object.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;operation&quot;: { # Additional information about a potentially long-running operation with which a log entry is associated. # Optional. Information about an operation associated with the log entry, if applicable.
          &quot;last&quot;: True or False, # Optional. Set this to True if this is the last log entry in the operation.
          &quot;id&quot;: &quot;A String&quot;, # Optional. An arbitrary operation identifier. Log entries with the same identifier are assumed to be part of the same operation.
          &quot;producer&quot;: &quot;A String&quot;, # Optional. An arbitrary producer identifier. The combination of id and producer must be globally unique. Examples for producer: &quot;MyDivision.MyBigCompany.com&quot;, &quot;github.com/MyProject/MyApplication&quot;.
          &quot;first&quot;: True or False, # Optional. Set this to True if this is the first log entry in the operation.
        },
        &quot;insertId&quot;: &quot;A String&quot;, # 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 are removed in a single query result. However, there are no guarantees of de-duplication in the export of logs.If the insert_id is omitted when writing a log entry, the Logging API  assigns its own unique identifier in this field.In queries, the insert_id is also used to order log entries that have the same log_name and timestamp values.
        &quot;metadata&quot;: { # Auxiliary metadata for a MonitoredResource object. MonitoredResource objects contain the minimum set of information to uniquely identify a monitored resource instance. There is some other useful auxiliary metadata. Monitoring and Logging use an ingestion pipeline to extract metadata for cloud resources of all types, and store the metadata in this message. # Output only. Deprecated. 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 system labels that were present in the metadata.systemLabels field will no longer be available in the LogEntry.
          &quot;systemLabels&quot;: { # Output only. Values for predefined system metadata labels. System labels are a kind of metadata extracted by Google, including &quot;machine_image&quot;, &quot;vpc&quot;, &quot;subnet_id&quot;, &quot;security_group&quot;, &quot;name&quot;, etc. System label values can be only strings, Boolean values, or a list of strings. For example:
              # { &quot;name&quot;: &quot;my-test-instance&quot;,
              #   &quot;security_group&quot;: [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;],
              #   &quot;spot_instance&quot;: false }
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;userLabels&quot;: { # Output only. A map of user-defined metadata labels.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;textPayload&quot;: &quot;A String&quot;, # The log entry payload, represented as a Unicode string (UTF-8).
        &quot;protoPayload&quot;: { # 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:&quot;type.googleapis.com/google.cloud.audit.AuditLog&quot;  &quot;type.googleapis.com/google.appengine.logging.v1.RequestLog&quot;
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="write">write(body=None, x__xgafv=None)</code>
  <pre>Writes log entries to Logging. This API method is the only way to send log entries to Logging. This method is used, directly or indirectly, by the Logging agent (fluentd) and all logging libraries configured to use Logging. A single request may contain log entries for a maximum of 1000 different resources (projects, organizations, billing accounts or folders)

Args:
  body: object, The request body.
    The object takes the form of:

{ # The parameters to WriteLogEntries.
    &quot;resource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: # Optional. A default monitored resource object that is assigned to all log entries in entries that do not specify a value for resource. Example:
        # { &quot;type&quot;: &quot;gce_instance&quot;,
        #   &quot;labels&quot;: {
        #     &quot;zone&quot;: &quot;us-central1-a&quot;, &quot;instance_id&quot;: &quot;00000000000000000000&quot; }}
        # See LogEntry.
        # { &quot;type&quot;: &quot;gce_instance&quot;,
        #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
        #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
      &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels &quot;project_id&quot;, &quot;instance_id&quot;, and &quot;zone&quot;.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance.
    },
    &quot;logName&quot;: &quot;A String&quot;, # Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:
        # &quot;projects/[PROJECT_ID]/logs/[LOG_ID]&quot;
        # &quot;organizations/[ORGANIZATION_ID]/logs/[LOG_ID]&quot;
        # &quot;billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]&quot;
        # &quot;folders/[FOLDER_ID]/logs/[LOG_ID]&quot;
        # [LOG_ID] must be URL-encoded. For example:
        # &quot;projects/my-project-id/logs/syslog&quot;
        # &quot;organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity&quot;
        # The permission logging.logEntries.create is needed on each project, organization, billing account, or folder that is receiving new log entries, whether the resource is specified in logName or in an individual log entry.
    &quot;entries&quot;: [ # Required. The log entries to send to Logging. The order of log entries in this list does not matter. Values supplied in this method&#x27;s log_name, resource, and labels fields are copied into those log entries in this list that do not include values for their corresponding fields. For more information, see the LogEntry type.If the timestamp or insert_id fields are missing in log entries, then this method supplies the current time or a unique identifier, respectively. The supplied values are chosen so that, among the log entries that did not supply their own values, the entries earlier in the list will sort before the entries later in the list. See the entries.list method.Log entries with timestamps that are more than the logs retention period (https://cloud.google.com/logging/quota-policy) in the past or more than 24 hours in the future will not be available when calling entries.list. However, those log entries can still be exported with LogSinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).To improve throughput and to avoid exceeding the quota limit (https://cloud.google.com/logging/quota-policy) for calls to entries.write, you should try to include several log entries in this list, rather than calling this method for each individual log entry.
      { # An individual entry in a log.
        &quot;trace&quot;: &quot;A String&quot;, # 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
        &quot;labels&quot;: { # Optional. A set of user-defined (key, value) data that provides additional information about the log entry.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;severity&quot;: &quot;A String&quot;, # Optional. The severity of the log entry. The default value is LogSeverity.DEFAULT.
        &quot;sourceLocation&quot;: { # Additional information about the source code location that produced the log entry. # Optional. Source code location information associated with the log entry, if any.
          &quot;line&quot;: &quot;A String&quot;, # Optional. Line within the source file. 1-based; 0 indicates no line number available.
          &quot;file&quot;: &quot;A String&quot;, # Optional. Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name.
          &quot;function&quot;: &quot;A String&quot;, # 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).
        },
        &quot;spanId&quot;: &quot;A String&quot;, # 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.
        &quot;traceSampled&quot;: True or False, # 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.
        &quot;receiveTimestamp&quot;: &quot;A String&quot;, # Output only. The time the log entry was received by Logging.
        &quot;timestamp&quot;: &quot;A String&quot;, # Optional. The time the event described by the log entry occurred. This time is used to compute the log entry&#x27;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 must have timestamps that don&#x27;t exceed the logs retention period (https://cloud.google.com/logging/quotas#logs_retention_periods) in the past, and that don&#x27;t exceed 24 hours in the future. Log entries outside those time boundaries aren&#x27;t ingested by Logging.
        &quot;logName&quot;: &quot;A String&quot;, # Required. The resource name of the log to which this log entry belongs:
            # &quot;projects/[PROJECT_ID]/logs/[LOG_ID]&quot;
            # &quot;organizations/[ORGANIZATION_ID]/logs/[LOG_ID]&quot;
            # &quot;billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]&quot;
            # &quot;folders/[FOLDER_ID]/logs/[LOG_ID]&quot;
            # A project number may 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: &quot;organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity&quot;. [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.
        &quot;httpRequest&quot;: { # A common proto for logging HTTP requests. Only contains semantics defined by the HTTP specification. Product-specific logging information MUST be defined in a separate message. # Optional. Information about the HTTP request associated with this log entry, if applicable.
          &quot;status&quot;: 42, # The response code indicating the status of response. Examples: 200, 404.
          &quot;referer&quot;: &quot;A String&quot;, # The referer URL of the request, as defined in HTTP/1.1 Header Field Definitions (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).
          &quot;latency&quot;: &quot;A String&quot;, # The request processing latency on the server, from the time the request was received until the response was sent.
          &quot;userAgent&quot;: &quot;A String&quot;, # The user agent sent by the client. Example: &quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET
              # CLR 1.0.3705)&quot;.
          &quot;cacheFillBytes&quot;: &quot;A String&quot;, # The number of HTTP response bytes inserted into cache. Set only when a cache fill was attempted.
          &quot;requestMethod&quot;: &quot;A String&quot;, # The request method. Examples: &quot;GET&quot;, &quot;HEAD&quot;, &quot;PUT&quot;, &quot;POST&quot;.
          &quot;protocol&quot;: &quot;A String&quot;, # Protocol used for the request. Examples: &quot;HTTP/1.1&quot;, &quot;HTTP/2&quot;, &quot;websocket&quot;
          &quot;responseSize&quot;: &quot;A String&quot;, # The size of the HTTP response message sent back to the client, in bytes, including the response headers and the response body.
          &quot;requestSize&quot;: &quot;A String&quot;, # The size of the HTTP request message in bytes, including the request headers and the request body.
          &quot;requestUrl&quot;: &quot;A String&quot;, # The scheme (http, https), the host name, the path and the query portion of the URL that was requested. Example: &quot;http://example.com/some/info?color=red&quot;.
          &quot;remoteIp&quot;: &quot;A String&quot;, # The IP address (IPv4 or IPv6) of the client that issued the HTTP request. Examples: &quot;192.168.1.1&quot;, &quot;FE80::0202:B3FF:FE1E:8329&quot;.
          &quot;serverIp&quot;: &quot;A String&quot;, # The IP address (IPv4 or IPv6) of the origin server that the request was sent to.
          &quot;cacheLookup&quot;: True or False, # Whether or not a cache lookup was attempted.
          &quot;cacheHit&quot;: True or False, # Whether or not an entity was served from cache (with or without validation).
          &quot;cacheValidatedWithOriginServer&quot;: True or False, # Whether or not the response was validated with the origin server before being served from cache. This field is only meaningful if cache_hit is True.
        },
        &quot;resource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: # 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.
            # { &quot;type&quot;: &quot;gce_instance&quot;,
            #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
            #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
          &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels &quot;project_id&quot;, &quot;instance_id&quot;, and &quot;zone&quot;.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance.
        },
        &quot;jsonPayload&quot;: { # The log entry payload, represented as a structure that is expressed as a JSON object.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;operation&quot;: { # Additional information about a potentially long-running operation with which a log entry is associated. # Optional. Information about an operation associated with the log entry, if applicable.
          &quot;last&quot;: True or False, # Optional. Set this to True if this is the last log entry in the operation.
          &quot;id&quot;: &quot;A String&quot;, # Optional. An arbitrary operation identifier. Log entries with the same identifier are assumed to be part of the same operation.
          &quot;producer&quot;: &quot;A String&quot;, # Optional. An arbitrary producer identifier. The combination of id and producer must be globally unique. Examples for producer: &quot;MyDivision.MyBigCompany.com&quot;, &quot;github.com/MyProject/MyApplication&quot;.
          &quot;first&quot;: True or False, # Optional. Set this to True if this is the first log entry in the operation.
        },
        &quot;insertId&quot;: &quot;A String&quot;, # 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 are removed in a single query result. However, there are no guarantees of de-duplication in the export of logs.If the insert_id is omitted when writing a log entry, the Logging API  assigns its own unique identifier in this field.In queries, the insert_id is also used to order log entries that have the same log_name and timestamp values.
        &quot;metadata&quot;: { # Auxiliary metadata for a MonitoredResource object. MonitoredResource objects contain the minimum set of information to uniquely identify a monitored resource instance. There is some other useful auxiliary metadata. Monitoring and Logging use an ingestion pipeline to extract metadata for cloud resources of all types, and store the metadata in this message. # Output only. Deprecated. 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 system labels that were present in the metadata.systemLabels field will no longer be available in the LogEntry.
          &quot;systemLabels&quot;: { # Output only. Values for predefined system metadata labels. System labels are a kind of metadata extracted by Google, including &quot;machine_image&quot;, &quot;vpc&quot;, &quot;subnet_id&quot;, &quot;security_group&quot;, &quot;name&quot;, etc. System label values can be only strings, Boolean values, or a list of strings. For example:
              # { &quot;name&quot;: &quot;my-test-instance&quot;,
              #   &quot;security_group&quot;: [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;],
              #   &quot;spot_instance&quot;: false }
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;userLabels&quot;: { # Output only. A map of user-defined metadata labels.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;textPayload&quot;: &quot;A String&quot;, # The log entry payload, represented as a Unicode string (UTF-8).
        &quot;protoPayload&quot;: { # 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:&quot;type.googleapis.com/google.cloud.audit.AuditLog&quot;  &quot;type.googleapis.com/google.appengine.logging.v1.RequestLog&quot;
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      },
    ],
    &quot;partialSuccess&quot;: True or False, # Optional. Whether valid entries should be written even if some other entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any entry is not written, then the response status is the error associated with one of the failed entries and the response includes error details keyed by the entries&#x27; zero-based index in the entries.write method.
    &quot;dryRun&quot;: True or False, # Optional. If true, the request should expect normal response, but the entries won&#x27;t be persisted nor exported. Useful for checking whether the logging API endpoints are working properly before sending valuable data.
    &quot;labels&quot;: { # Optional. Default labels that are added to the labels field of all log entries in entries. If a log entry already has a label with the same key as a label in this parameter, then the log entry&#x27;s label is not changed. See LogEntry.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Result returned from WriteLogEntries.
  }</pre>
</div>

</body></html>