Coverage for structlog_gcp/base.py: 100%
15 statements
« prev ^ index » next coverage.py v7.6.1, created at 2024-09-21 14:36 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2024-09-21 14:36 +0000
1import structlog.processors
2from structlog.typing import Processor
4from . import error_reporting, processors
7def build_processors(
8 service: str | None = None,
9 version: str | None = None,
10) -> list[Processor]:
11 procs: list[Processor] = []
13 # Add a timestamp in ISO 8601 format.
14 procs.append(structlog.processors.TimeStamper(fmt="iso"))
15 procs.append(processors.init_cloud_logging)
17 procs.extend(processors.setup_log_severity())
18 procs.extend(processors.setup_code_location())
20 # Errors: log exceptions
21 procs.extend(error_reporting.setup_exceptions())
23 # Errors: formatter for Error Reporting
24 procs.append(error_reporting.ReportError(["CRITICAL"]))
26 # Errors: add service context
27 procs.append(error_reporting.ServiceContext(service, version))
29 # Finally: Cloud Logging formatter
30 procs.append(processors.finalize_cloud_logging)
32 # Format as JSON
33 procs.append(structlog.processors.JSONRenderer())
35 return procs