Google Cloud Logging
Send structured logs to Google Cloud Logging using the example sink in examples/sinks/gcp_logging_sink.py.
Quick start (code)
from fapilog import Settings, get_logger
from examples.sinks.gcp_logging_sink import GCPCloudLoggingSink, GCPCloudLoggingConfig
sink = GCPCloudLoggingSink(
GCPCloudLoggingConfig(
log_name="myapp",
project="my-gcp-project",
resource_type="gce_instance",
resource_labels={"instance_id": "abc", "zone": "us-central1-a"},
labels={"env": "prod"},
)
)
logger = get_logger(settings=Settings(), sinks=[sink])
logger.info("hello gcp", user="alice")
Environment setup
export GOOGLE_CLOUD_PROJECT=my-gcp-project
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
Then:
from fapilog import get_logger
from examples.sinks.gcp_logging_sink import GCPCloudLoggingSink
logger = get_logger(sinks=[GCPCloudLoggingSink()])
logger.warning("rate limited", path="/api")
Entry-point registration
[project.entry-points."fapilog.sinks"]
gcp_cloud_logging = "myapp.sinks.gcp_logging_sink:GCPCloudLoggingSink"
core:
sinks: ["gcp_cloud_logging"]
sink_config:
gcp_cloud_logging:
log_name: "myapp"
resource_type: "global"
labels:
env: "prod"
Operational notes
Uses
google-cloud-loggingclient withlog_structfor structured payloads.Leverages Application Default Credentials; service accounts via
GOOGLE_APPLICATION_CREDENTIALS.Provide
resource_typeandresource_labelsto align with GCP billing/metrics.
Troubleshooting
Auth errors: verify ADC is available or the service account JSON path.
Missing labels: ensure
resource_labelskeys match the selected resource type.