I'm working on a simple Google Cloud Function that runs in the Python runtime and I want some simple logging from the Python program to Stackdriver Logging.
Based on Google's startup guide, this should be straighforward https://cloud.google.com/logging/docs/setup/python
I set up a simple test function to isolate the logging issues I'm seeing
import google.cloud.logging
def logging_test_background(data, context):
logging_client = google.cloud.logging.Client()
logging_client.setup_logging()
logging.info("This should be info")
logging.debug("This should be debug")
logging.warning("This should be warning")
logging.error("This should be error")
In Stackdriver Logging everything gets jumbled. 1. Info is duplicated as an Error 2. Debug doesn't come through 3. Warning is duplicated, but both are error logging level 4. Error is duplicated
Is there something I'm missing in the configuration?
You need to create your own logger and add the google-cloud-logging
default handler to it:
import logging
from flask import Flask
from google.cloud import logging as cloudlogging
log_client = cloudlogging.Client()
log_handler = log_client.get_default_handler()
cloud_logger = logging.getLogger("cloudLogger")
cloud_logger.setLevel(logging.INFO)
cloud_logger.addHandler(log_handler)
def logging_test_background(data, context):
cloud_logger.info("info")
cloud_logger.warning("warn")
cloud_logger.error("error")
return 'OK'
Produces:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With