| 6 | |
| 7 | @dataclass |
| 8 | class DiffgramLogger: |
| 9 | logger_name: str |
| 10 | logger: Any = None |
| 11 | output_test_messages: bool = False |
| 12 | |
| 13 | logging_initialized = {} |
| 14 | """ |
| 15 | Usage example |
| 16 | |
| 17 | default_abstract_logger = DiffgramLogger('default') |
| 18 | |
| 19 | default_abstract_logger.configure_concrete_logger( |
| 20 | system_mode = settings.DIFFGRAM_SYSTEM_MODE) |
| 21 | |
| 22 | logger = default_abstract_logger.get_concrete_logger() |
| 23 | |
| 24 | Assumption |
| 25 | The default namespace is available in regular_api for the respective service |
| 26 | so by default both the abstract and concrete logger are available. |
| 27 | |
| 28 | if we want to use a dedicated isolated logger for a separate module for some reason |
| 29 | we can do |
| 30 | |
| 31 | default_abstract_logger = DiffgramLogger('service_name_isolated_module_name') |
| 32 | or something like that |
| 33 | |
| 34 | Reconfigure |
| 35 | Call configure_concrete_logger() anytime |
| 36 | |
| 37 | |
| 38 | """ |
| 39 | |
| 40 | def get_concrete_logger(self): |
| 41 | return self.logger |
| 42 | |
| 43 | def configure_concrete_logger(self, |
| 44 | system_mode: str): |
| 45 | |
| 46 | self.logger = None |
| 47 | |
| 48 | if system_mode in ['sandbox', 'testing', 'testing_e2e'] or \ |
| 49 | settings.RUNNING_LOCALLY == True: |
| 50 | self.logger = self.configure_sandbox_testing_logger() |
| 51 | elif system_mode == 'production': |
| 52 | self.logger = self.configure_sandbox_testing_logger() |
| 53 | |
| 54 | if self.logger is None and not DiffgramLogger.logging_initialized.get(self.logger_name): |
| 55 | # Default to always create a logger, eg in case of some settings being mis-configured |
| 56 | self.logger = self.configure_default_logger() |
| 57 | return self.logger |
| 58 | |
| 59 | def configure_gcp_logger(self): |
| 60 | # Imports the Google Cloud client library |
| 61 | |
| 62 | if DiffgramLogger.logging_initialized.get(self.logger_name): |
| 63 | return logging.getLogger(self.logger_name) |
| 64 | |
| 65 | from google.cloud import logging as gcp_logging |
no outgoing calls
no test coverage detected