This page describes the logs available when using Cloud Run, and how to view and write logs.
Cloud Run has several types of logs, and these are automatically sent to Cloud Logging:
varlog/system.You can view logs for your service, job, or worker pool in several ways:
Both of the console methods of viewing logs examine the same logs stored in Cloud Logging, but the Cloud Logging Logs Explorer provides more details and more filtering capabilities.
You can view logs in the Cloud Run page for the following resources:
In the Google Cloud console, go to the Cloud Run Services page:
Click the service in the displayed list.
Click the Logs tab to get the request and container logs for all revisions of this service. You can filter by log severity level.
To view job logs in the Cloud Run page:
In the Google Cloud console, go to the Cloud Run Jobs page:
Locate the job in the jobs list, and click on it.
Click the Logs tab to get the container logs for all executions of this job. You can filter by log severity level.
Alternatively, if you want to see the logs pre-filtered for a specific job execution, click on the job execution and then click the Logs tab.
To view worker pool logs in the Cloud Run page:
In the Google Cloud console, go to the Cloud Run Worker pools page:
Click the worker pool in the displayed list.
Click the Logs tab to get the request and container logs for all revisions of this worker pool. You can filter by log severity level.
You can use Google Cloud CLI to view tailing logs or read existing logs for a Cloud Run service in the command line By default, the logs are formatted in a single-line format optimized for the console.
To tail logs, you need to install the log-streaming component in
Google Cloud CLI. If the component isn't installed, you will be prompted
to install it when required.
For a Cloud Run service, you can tail logs in real-time from your Cloud Run service directly in the command-line:
gcloud beta run services logs tail SERVICE --project PROJECT-ID
Replace the following:
gcloud config get-value project.For a Cloud Run service, you can read existing logs in either of two ways:
gcloud run services logs read SERVICE --limit=10 --project PROJECT-ID
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=SERVICE" --project PROJECT-ID --limit 10
Replace the following:
gcloud config get-value project.To view your Cloud Run logs in the Cloud Logging Logs Explorer:
Go to the Logs Explorer page in the Google Cloud console:
Select an existing Google Cloud project at the top of the page, or create a new project.
Using the drop-down menus, select the resource:
For more information, see Using the Logs Explorer.
To view your logs in Cloud Code, read the IntelliJ and Visual Studio Code guides.
If you want to read the logs programmatically, you can use one of these methods:
When new instances start for your Cloud Run service, Cloud Logging
includes log entries under the varlog/system log name explaining why each
instance was created. The log entry follows this format:
Starting new instance. Reason: REASON - DESCRIPTION
The following table provides a breakdown of instance descriptions:
| Reason | Description |
|---|---|
MANUAL_OR_CUSTOMER_MIN_INSTANCE |
Instance started because of customer-configured minimum instances or manual scaling. |
AUTOSCALING |
Instance started due to configured scaling factors (such as CPU utilization, request throughput, and so forth) or not enough existing capacity for current traffic. |
DEPLOYMENT_ROLLOUT |
Instance started due to traffic shifting between revisions due to deployment, traffic split adjustment, or deployment health check. |
When you write logs from your service, job, or worker pool, they will be picked up automatically by Cloud Logging so long as the logs are written to any of these locations:
stdout) or standard error (stderr) streams/var/log directory/dev/log)Most developers are expected to write logs using standard output and standard error.
The container logs written to these supported locations are automatically associated with the Cloud Run service, revision, and location, the Cloud Run worker pool, revision, and location, or with the Cloud Run job. Exceptions contained in these logs are captured by and reported in Error Reporting.
The integrated logging balances reliability and resource usage, and should work
for most applications. Writing log entries using integrated logging does not
consume quota for the number of entries.write requests per minute of the
Cloud Logging API.
If your application has requirements for higher volume or reliability, we recommend using the Cloud Logging API directly, either as a library within your application or as a separate sidecar container.
When you write logs, you can send a simple text string or send a single line
of serialized JSON, also called "structured" data. This is picked up and
parsed by Cloud Logging and is placed into jsonPayload. In
contrast, the simple text message is placed in textPayload.
The following snippet shows how to write structured log entries. It also shows how to correlate log messages with the corresponding request log.
The structure for each log entry is provided by an Entry type:
When an Entry struct is logged, the String method is called to marshal it to
the JSON format expected by Cloud Logging:
Enable JSON logging with Logback and
SLF4J by configuring the
Logging Logback appender
in your logback.xml configuration:
Configure the LoggingAppender to redirect logs to standard output (stdout)
in structured JSON format for Cloud Run to capture. For more
details, review Logback configuration.
This produces the following output log structure:
When you provide a structured log as a JSON dictionary, some special fields are
stripped from the jsonPayload and are written to the corresponding field in
the generated
LogEntry as described in
the documentation for special fields.
For example, if your JSON includes a severity property, it is removed from
the jsonPayload and appears instead as the log entry's severity.
The message property is used as the main display text of the log entry if present.
For more on special properties read the Logging Resource section
below.
In the Logs Explorer, logs correlated by the same trace are
viewable in "parent-child" format: when you click on the triangle
icon at the left of the request log entry, the container logs related to that
request show up nested under the request log.
Container logs are not automatically correlated to request logs unless you use a
Cloud Logging client library.
To correlate container logs with request logs without using a client library,
you can use a structured JSON log line that contains a
logging.googleapis.com/trace field with the trace identifier extracted from
the X-Cloud-Trace-Context header as shown in the above sample for
structured logging.
Request logs are created automatically. Although you cannot control the amount of request logs directly from Cloud Run, you can make use of the logs exclusion feature from Cloud Logging.
If you've used Cloud Logging with certain Google Cloud products, such as Compute Engine, you may have used Cloud Logging logging agents. Cloud Run does not use logging agents because it has built-in support for log collection.
The logging resource names for Cloud Run are:
cloud_run_revision).cloud_run_job).cloud_run_workerpool).Clicking on a log entry in the Logs Explorer opens up a JSON formatted log entry so you can drill down to the details you want.
All of the fields in a log entry, such as timestamps, severity, and httpRequest
are standard, and are described in the documentation for a
log entry.
Cloud Run adds additional metadata, so you can identify the source of a log. This includes the (labels that you set on your Cloud Run service) and resource labels that are specific to Cloud Run.
The following is a list of fields that can be found in the log entry for a Cloud Run service:
| Field | Values and notes |
|---|---|
LogEntry.labels.instanceId |
The instance that handled the request. |
LogEntry.labels.run.googleapis.com/base_image_versions |
The base image version that the service uses. Only appears for services deployed from source and if automatic security updates is enabled. |
LogEntry.labels.run.googleapis.com/cloud_event_id |
The CloudEvent ID. Only appears for services receiving events from Eventarc. |
LogEntry.labels.run.googleapis.com/cloud_event_source |
The CloudEvent source. Only appears for services receiving events from Eventarc. |
LogEntry.labels.mylabel,LogEntry.labels.mysecondlabel |
The labels that are set by you on the service. |
LogEntry.logName |
Identifies the log, for example, request log, standard error, standard output, etc. |
LogEntry.resource.labels.location |
Identifies the Google Cloud location of the service. |
LogEntry.resource.labels.project_id |
The project the service is deployed to. |
LogEntry.resource.labels.revision_name |
The revision that served the request. |
LogEntry.resource.labels.service_name |
The service that served the request. |
LogEntry.resource.type |
cloud_run_revision. The Cloud Run resource type. |
Here's an example request log entry for a Cloud Run service:
{
httpRequest: {…}
insertId: "5c82b3d1000ece0000000000"
labels: {
instanceId: "00bf4bf00000fb59c906a00000c9e29c2c4e06dce91500000000056008d2b6460f163c0057b97b2345f2725fb2423ee5f0bafd36df887fdb1122371563cf1ff453717282afe000001"
mylabel: "mylabelvalue"
mysecondlabel: "mysecondlabelvalue"
}
logName: "projects/my-project/logs/run.googleapis.com%2Frequests"
receiveTimestamp: "2019-03-08T18:26:25.981686167Z"
resource: {
labels: {
configuration_name: "myservice"
location: "europe-west1"
project_id: "my-project"
revision_name: "myservice-00002"
service_name: "myservice"
}
type: "cloud_run_revision"
}
severity: "INFO"
timestamp: "2019-03-08T18:26:25.970397Z"
}
The following is a list of fields that can be found in the log entry for a Cloud Run job:
LogEntry.labels.mysecondlabel
cloud_run_job. The Cloud Run resource type.
The following is a list of fields that can be found in the log entry for a Cloud Run worker pool:
LogEntry.labels.mysecondlabel
cloud_run_workerpool. The Cloud Run resource type.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-06-09 UTC.