Skip to content

Commit e21bbbf

Browse files
committed
fix logging lib dependencies
1 parent b7216a4 commit e21bbbf

File tree

5 files changed

+44
-35
lines changed

5 files changed

+44
-35
lines changed

api/src/main.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@
5656
app.include_router(SearchApiRouter)
5757

5858

59-
@app.on_event("startup")
60-
async def startup_event():
59+
# @app.on_event("startup")
60+
# async def startup_event():
6161
# Add the GCP log handler to the logger.
6262
# This is required to log the API access logs to the GCP logging service.
63-
logger = logging.getLogger(API_ACCESS_LOG)
64-
handler = GCPLogHandler()
65-
logger.handlers.append(handler)
63+
# logger = logging.getLogger(API_ACCESS_LOG)
64+
# handler = GCPLogHandler()
65+
# logger.handlers.append(handler)
6666

6767

6868
if __name__ == "__main__":

api/src/middleware/request_context_middleware.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ class RequestContextMiddleware:
1212
"""
1313

1414
def __init__(self, app: ASGIApp) -> None:
15-
Logger.init_logger()
1615
self.logger = new_logger(API_ACCESS_LOG)
1716
self.app = app
1817

@@ -64,11 +63,11 @@ def log_api_access(
6463
request = self.create_http_request(scope, request_context, status_code, content_length, latency)
6564
self.logger.info(
6665
"API Access Log",
67-
extra={
68-
"context": {
69-
"http_request": request,
70-
}
71-
},
66+
# extra={
67+
# "context": {
68+
# "http_request": request,
69+
# }
70+
# },
7271
)
7372

7473
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import os
2+
3+
4+
def get_env_logging_level():
5+
"""
6+
Get the logging level from the environment via OS variable LOGGING_LEVEL. Returns INFO if not set.
7+
"""
8+
return os.getenv("LOGGING_LEVEL", "INFO")

api/src/shared/database/database.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from sqlalchemy.orm import sessionmaker
2020
import logging
2121

22-
from utils.logging_utils import get_env_logging_level
22+
from shared.common.logging_common import get_env_logging_level
2323

2424

2525
def generate_unique_id() -> str:

api/src/utils/logging_utils.py

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,11 @@
66
import google.cloud.logging
77
from google.cloud.logging_v2 import Client
88

9+
from shared.common.logging_common import get_env_logging_level
910
from middleware.request_context import get_request_context
1011
from utils.config import get_config, PROJECT_ID
1112

1213

13-
def get_env_logging_level():
14-
"""
15-
Get the logging level from the environment via OS variable LOGGING_LEVEL. Returns INFO if not set.
16-
"""
17-
return os.getenv("LOGGING_LEVEL", "INFO")
18-
19-
2014
def is_local_env():
2115
return os.getenv("K_SERVICE") is None
2216

@@ -64,28 +58,31 @@ def init_logger():
6458
if hasattr(Logger, "initialized"):
6559
return
6660
logging.basicConfig(level=get_env_logging_level())
67-
if is_local_env():
61+
if not is_local_env():
6862
# Use the default logging handler
6963
logging.info("Using default logging handler")
70-
return
71-
try:
72-
client = google.cloud.logging_v2.Client()
73-
client.get_default_handler()
74-
client.setup_logging()
75-
logging.info("GCP logging client initialized")
76-
except Exception as error:
77-
# This might happen when the GCP authorization credentials are not available.
78-
# Example, when running the tests locally
79-
logging.error(f"Error initializing the logger: {error}")
80-
Logger.initialized = True
64+
else:
65+
try:
66+
client = google.cloud.logging_v2.Client()
67+
client.get_default_handler()
68+
client.setup_logging()
69+
logger = _get_trace_logger(logging.getLogger("LOGGING_UTILS"))
70+
logger.info("GCP logging client initialized")
71+
except Exception as error:
72+
# This might happen when the GCP authorization credentials are not available.
73+
# Example, when running the tests locally
74+
logging.error(f"Error initializing the logger: {error}")
75+
Logger.initialized = True
8176

8277
def get_logger(self):
8378
return self.logger
8479

8580

86-
class TraceLogger:
81+
class TraceLogger(logging.Logger):
8782
def __init__(self, logger: logging.Logger, project_id: str, trace_id: str, span_id: str):
83+
super().__init__(logger.name)
8884
self._logger = logger
85+
self._logger.propagate = False
8986
self._trace_id = None
9087
self._span_id = None
9188
self._project_id = project_id
@@ -106,7 +103,7 @@ def _inject_trace(self, extra):
106103
return trace_fields
107104

108105
def info(self, msg, *args, extra=None, **kwargs):
109-
return self._logger.info(msg, *args, extra=self._inject_trace(extra), **kwargs)
106+
return self._logger.info(msg, extra=self._inject_trace(extra))
110107

111108
def error(self, msg, *args, extra=None, **kwargs):
112109
return self._logger.error(msg, *args, extra=self._inject_trace(extra), **kwargs)
@@ -121,16 +118,21 @@ def exception(self, msg, *args, extra=None, **kwargs):
121118
return self._logger.exception(msg, *args, extra=self._inject_trace(extra), **kwargs)
122119

123120

124-
def new_logger(name: str):
121+
def new_logger(name: str) -> logging.Logger:
125122
"""
126123
Create a new logger with the given name.
127124
"""
128125
Logger.init_logger()
129126
logger = logging.getLogger(name)
130127
logger.setLevel(get_env_logging_level())
131-
request_context = get_request_context()
128+
return _get_trace_logger(logger)
132129
# if not request_context:
133130
# return logger
131+
def _get_trace_logger(logger: logging.Logger) -> TraceLogger:
132+
"""
133+
Create a new TraceLogger with the given logger and name.
134+
"""
135+
request_context = get_request_context()
134136
return TraceLogger(logger, get_config(PROJECT_ID), request_context.get("trace_id"), request_context.get("span_id"))
135137

136138

0 commit comments

Comments
 (0)