MCPcopy Index your code
hub / github.com/diffgram/diffgram / DiffgramLogger

Class DiffgramLogger

shared/utils/logging.py:8–126  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6
7@dataclass
8class 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

Callers 4

regular_api.pyFile · 0.90
regular_api.pyFile · 0.90
get_shared_loggerFunction · 0.90
regular_api.pyFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected