MCPcopy Create free account
hub / github.com/dbunt1tled/python-fast-api / Log

Class Log

src/core/log/log.py:15–153  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13
14
15class Log:
16 def __init__(
17 self,
18 app_name: str,
19 env: str,
20 service_name: str,
21 loki_url: str,
22 log_level: str = "DEBUG",
23 loki_enabled: bool = False,
24 log_format: str = "json",
25 ):
26 self.app_name = app_name
27 self.env = env
28 self.service_name = service_name
29 self.loki_url = loki_url
30 self.log_level = log_level
31 self.loki_enabled = loki_enabled
32 self.log_format = log_format
33 self.setup()
34
35 self.base_logger = logging.getLogger(app_name)
36 self.logger = LoggerAdapter(self.base_logger)
37
38 def setup(self) -> None:
39 root_logger = logging.getLogger()
40 root_logger.handlers.clear()
41 root_logger.setLevel(getattr(logging, self.log_level))
42
43 handlers = []
44
45 console_handler = logging.StreamHandler(sys.stdout)
46 console_handler.setLevel(getattr(logging, self.log_level))
47 console_handler.setFormatter(ConsoleFormatter())
48 handlers.append(console_handler)
49
50 if self.loki_enabled:
51 try:
52 loki_handler = logging_loki.LokiHandler(
53 url=f"{self.loki_url}/loki/api/v1/push",
54 tags={
55 "app": self.app_name,
56 "env": self.env,
57 "service_name": self.service_name,
58 },
59 version="1",
60 )
61 loki_handler.addFilter(filter=LokiLevelFilter())
62 loki_handler.setLevel(getattr(logging, self.log_level))
63 loki_handler.setFormatter(LokiJSONFormatter())
64 handlers.append(loki_handler)
65 except Exception as e:
66 print(f"Warning: An error occurred while setting up Loki logging: {e}")
67
68 app_logger = logging.getLogger(self.app_name)
69 app_logger.setLevel(getattr(logging, self.log_level))
70 app_logger.handlers.clear()
71
72 for handler in handlers:

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected