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

1import structlog.processors 

2from structlog.typing import Processor 

3 

4from . import error_reporting, processors 

5 

6 

7def build_processors( 

8 service: str | None = None, 

9 version: str | None = None, 

10) -> list[Processor]: 

11 procs: list[Processor] = [] 

12 

13 # Add a timestamp in ISO 8601 format. 

14 procs.append(structlog.processors.TimeStamper(fmt="iso")) 

15 procs.append(processors.init_cloud_logging) 

16 

17 procs.extend(processors.setup_log_severity()) 

18 procs.extend(processors.setup_code_location()) 

19 

20 # Errors: log exceptions 

21 procs.extend(error_reporting.setup_exceptions()) 

22 

23 # Errors: formatter for Error Reporting 

24 procs.append(error_reporting.ReportError(["CRITICAL"])) 

25 

26 # Errors: add service context 

27 procs.append(error_reporting.ServiceContext(service, version)) 

28 

29 # Finally: Cloud Logging formatter 

30 procs.append(processors.finalize_cloud_logging) 

31 

32 # Format as JSON 

33 procs.append(structlog.processors.JSONRenderer()) 

34 

35 return procs