| name | gcloud-logs |
| description | Fetch Your Application logs from Google Cloud Logging using gcloud-logs.sh CLI. Use when debugging production issues, tracing request flows, analyzing errors, or investigating service behavior. |
GCloud Logs Retrieval
When to Use
- Debugging production failures or errors
- Tracing flows for specific entities (ID lookups)
- Investigating service processing issues
- Analyzing error patterns and frequencies
- Verifying log messages after deployments
- Checking background job behavior
Command: gcloud-logs.sh
Fetches your-app container logs from Google Cloud Logging with multi-line JSON output.
Usage
gcloud-logs.sh [additional_filter] [time_range] [project]
Parameters
| Parameter | Default | Description |
|---|
additional_filter | (none) | Extra filter to append to default |
time_range | 1h | Time range: 1h, 2d, 7d, 30m, etc. |
project | your-project-prod | GCP project ID |
Default Filter
resource.labels.namespace_name="your-namespace"
resource.labels.container_name="your-app"
Common Queries
All Recent Logs
gcloud-logs.sh '' '1h'
Errors Only
gcloud-logs.sh 'severity="ERROR"' '24h'
Warnings and Above
gcloud-logs.sh 'severity>="WARNING"' '6h'
Specific Entity (by ID)
gcloud-logs.sh 'jsonPayload.message=~"entity-123"' '2d'
Specific Partner
gcloud-logs.sh 'jsonPayload.message=~"PartnerA"' '1h'
gcloud-logs.sh 'jsonPayload.message=~"PartnerB"' '1h'
gcloud-logs.sh 'jsonPayload.message=~"PartnerC"' '1h'
Task ID
gcloud-logs.sh 'jsonPayload.taskId="b57767b5-4b11-4036-8e48-bb40d54d6a14"' '1d'
Specific Logger Class
gcloud-logs.sh 'jsonPayload.logger=~"PartnerAClient"' '2d'
gcloud-logs.sh 'jsonPayload.logger=~"DataMapper"' '1h'
Message Pattern (Regex)
gcloud-logs.sh 'jsonPayload.message=~"Successfully processed [0-9]+ items"' '2d'
gcloud-logs.sh 'jsonPayload.message=~"Failed to publish"' '24h'
gcloud-logs.sh 'jsonPayload.message=~"Wrong credentials"' '7d'
Trace ID (follow request)
gcloud-logs.sh 'jsonPayload.trace_id="c3402eec19ce60272d79cd9421aacee1"' '1d'
Filtering with jq
Extract Just Messages
gcloud-logs.sh 'severity="ERROR"' '1h' | jq '.[].jsonPayload.message'
Count by Logger
gcloud-logs.sh '' '1h' | jq 'group_by(.jsonPayload.logger) | map({logger: .[0].jsonPayload.logger, count: length}) | sort_by(-.count)'
Filter Specific Fields
gcloud-logs.sh '' '1h' | jq '[.[] | {
time: .timestamp,
logger: .jsonPayload.logger,
message: .jsonPayload.message,
severity: .severity
}]'
Get Unique Task IDs
gcloud-logs.sh '' '1h' | jq '[.[].jsonPayload.taskId] | unique | map(select(. != null))'
Errors with Context
gcloud-logs.sh 'severity="ERROR"' '24h' | jq '[.[] | {
time: .timestamp,
logger: .jsonPayload.logger,
message: .jsonPayload.message,
trace_id: .jsonPayload.trace_id,
taskId: .jsonPayload.taskId
}]'
Log Structure
JSON Payload Fields
| Field | Description |
|---|
jsonPayload.message | Log message text |
jsonPayload.logger | Java logger class |
jsonPayload.thread | Thread name |
jsonPayload.taskId | Task UUID |
jsonPayload.trace_id | Distributed trace ID |
jsonPayload.span_id | Span ID within trace |
jsonPayload.context | Application context |
jsonPayload.serviceContext.service | Service name |
jsonPayload.serviceContext.version | App version |
Metadata Fields
| Field | Description |
|---|
severity | INFO, DEBUG, WARNING, ERROR |
timestamp | ISO 8601 timestamp |
resource.labels.pod_name | Kubernetes pod |
resource.labels.namespace_name | K8s namespace |
resource.labels.container_name | Container name |
Filter Syntax Reference
Comparison Operators
= Equals
!= Not equals
> Greater than
>= Greater than or equal
< Less than
<= Less than or equal
=~ Regex match
!~ Regex not match
: Contains substring
Combining Filters
gcloud-logs.sh 'severity="ERROR" jsonPayload.logger=~"Publisher"' '1h'
gcloud-logs.sh 'severity="ERROR" OR severity="WARNING"' '1h'
gcloud-logs.sh 'NOT jsonPayload.logger=~"HealthCheck"' '1h'
Regex Patterns
gcloud-logs.sh 'jsonPayload.message=~"failed"' '1h'
gcloud-logs.sh 'jsonPayload.message=~"^Starting"' '1h'
gcloud-logs.sh 'jsonPayload.message=~"(?i)error"' '1h'
gcloud-logs.sh 'jsonPayload.message=~"[A-Z]-[A-Z0-9]{6}"' '1h'
Environment Variables
| Variable | Default | Description |
|---|
GCLOUD_PROJECT | your-project-prod | Override default project |
Example
GCLOUD_PROJECT=your-project-stage gcloud-logs.sh '' '1h'
Projects
| Project | Environment | Use Case |
|---|
your-project-prod | Production | Container logs (default) |
your-project-stage | Staging | Staging container logs |
your-project-dev | Development | Dev container logs |
Common Debug Scenarios
Service Publishing Failed
gcloud-logs.sh 'severity="ERROR" jsonPayload.message=~"PartnerA"' '24h'
gcloud-logs.sh 'jsonPayload.message=~"Wrong credentials|WRONG_CREDENTIALS|401|403"' '7d'
Data Processing Issues
gcloud-logs.sh 'jsonPayload.message=~"entity-456"' '7d'
gcloud-logs.sh 'severity="ERROR" jsonPayload.logger=~"Transformer"' '24h'
Statistics Fetching
gcloud-logs.sh 'jsonPayload.logger=~"StatisticsFetcher"' '2d'
gcloud-logs.sh 'jsonPayload.message=~"Failed to fetch.*statistics"' '7d'
Deployment Verification
gcloud-logs.sh '' '30m' | jq '.[0].jsonPayload.serviceContext.version'
gcloud-logs.sh 'jsonPayload.message=~"Started YourApplication"' '1h'
Output Handling
Save to File
gcloud-logs.sh 'severity="ERROR"' '24h' > errors.json
Count Results
gcloud-logs.sh 'severity="ERROR"' '24h' | jq 'length'
Pretty Print Single Log
gcloud-logs.sh '' '1h' | jq '.[0]'
Related Resources
- Kubernetes:
kubectl logs -n your-namespace deployment/your-app
- Application Config:
your-app-application/src/main/resources/application.yml
- Logging Config:
your-app-application/src/main/resources/logback-spring.xml