8000 google-cloud-python/logging/docs/stdlib-usage.rst at master · unacast/google-cloud-python · GitHub
[go: up one dir, main page]

8000
Skip to content

Latest commit

 

History

History
70 lines (49 loc) · 2.77 KB

File metadata and controls

70 lines (49 loc) · 2.77 KB

Integration with Python logging module

It's possible to tie the Python :mod:`logging` module directly into Google Cloud Logging. To use it, create a :class:`CloudLoggingHandler <google.cloud.logging.CloudLoggingHandler>` instance from your Logging client.

>>> import logging
>>> import google.cloud.logging # Don't conflict with standard logging
>>> from google.cloud.logging.handlers import CloudLoggingHandler
>>> client = google.cloud.logging.Client()
>>> handler = CloudLoggingHandler(client)
>>> cloud_logger = logging.getLogger('cloudLogger')
>>> cloud_logger.setLevel(logging.INFO) # defaults to WARN
>>> cloud_logger.addHandler(handler)
>>> cloud_logger.error('bad news')

Note

This handler by default uses an asynchronous transport that sends log entries on a background
thread. However, the API call will still be made in the same process. For other transport options, see the transports section.

All logs will go to a single custom log, which defaults to "python". The name of the Python logger will be included in the structured log entry under the "python_logger" field. You can change it by providing a name to the handler:

>>> handler = CloudLoggingHandler(client, name="mycustomlog")

It is also possible to attach the handler to the root Python logger, so that for example a plain logging.warn call would be sent to Cloud Logging, as well as any other loggers created. However, you must avoid infinite recursion from the logging calls the client itself makes. A helper method :meth:`setup_logging <google.cloud.logging.handlers.setup_logging>` is provided to configure this automatically:

>>> import logging
>>> import google.cloud.logging # Don't conflict with standard logging
>>> from google.cloud.logging.handlers import CloudLoggingHandler, setup_logging
>>> client = google.cloud.logging.Client()
>>> handler = CloudLoggingHandler(client)
>>> logging.getLogger().setLevel(logging.INFO) # defaults to WARN
>>> setup_logging(handler)
>>> logging.error('bad news')

You can also exclude certain loggers:

>>> setup_logging(handler, excluded_loggers=('werkzeug',))

Python logging handler transports

The Python logging handler can use different transports. The default is :class:`google.cloud.logging.handlers.BackgroundThreadTransport`.

1. :class:`google.cloud.logging.handlers.BackgroundThreadTransport` this is the default. It writes entries on a background :class:`python.threading.Thread`.

1. :class:`google.cloud.logging.handlers.SyncTransport` this handler does a direct API call on each logging statement to write the entry.

0