Skip to content

Commit 5351fc9

Browse files
committed
migrate to cloud logging
1 parent f392f2a commit 5351fc9

File tree

2 files changed

+58
-33
lines changed

2 files changed

+58
-33
lines changed

api/src/feeds/impl/feeds_api_impl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ class FeedsApiImpl(BaseFeedsApi):
6161
If a method is left blank the associated endpoint will return a 500 HTTP response.
6262
"""
6363

64-
APIFeedType = Union[FeedOrm, GtfsFeed, GtfsRTFeed]
6564

6665
def __init__(self) -> None:
66+
Logger.init_logger()
6767
self.logger = Logger("FeedsApiImpl").get_logger()
6868

6969
@with_db_session

api/src/shared/common/logging_utils.py

Lines changed: 57 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import os
33
from google.cloud.logging.handlers import CloudLoggingHandler
44
import google.cloud.logging
5-
5+
from google.cloud.logging_v2 import Client
66

77
def get_env_logging_level():
88
"""
@@ -22,46 +22,71 @@ class Logger:
2222

2323
def __init__(self, name: str):
2424
self.logger = logging.getLogger(name)
25-
self.logger.setLevel(get_env_logging_level())
26-
self.logger.handlers.clear()
25+
# self.logger.setLevel(get_env_logging_level())
26+
# self.logger.handlers.clear()
2727

2828
# formatter = jsonlogger.JsonFormatter(
2929
# '%(asctime)s %(levelname)s %(name)s %(message)s'
3030
# )
31-
32-
if not is_local_env():
33-
handler = logging.StreamHandler()
34-
else:
35-
try:
36-
client = google.cloud.logging.Client()
37-
client.setup_logging()
38-
self.logger.info("GCP logging client initialized")
39-
handler = CloudLoggingHandler(client)
40-
except Exception as e:
41-
# fallback to stdout if cloud client fails
42-
self.logger.error(f"GCP logging failed, using fallback: {e}")
43-
handler = logging.StreamHandler()
31+
# logging.basicConfig(level=get_env_logging_level())
32+
# if not is_local_env():
33+
# handler = logging.StreamHandler()
34+
# else:
35+
# try:
36+
# client = google.cloud.logging.Client()
37+
# client.setup_logging()
38+
# # self.logger.info("GCP logging client initialized")
39+
# # handler = CloudLoggingHandler(client)
40+
# except Exception as e:
41+
# # fallback to stdout if cloud client fails
42+
# # self.logger.error(f"GCP logging failed, using fallback: {e}")
43+
# handler = logging.StreamHandler()
4444

4545
# handler.setFormatter(formatter)
46-
self.logger.addHandler(handler)
46+
# self.logger.addHandler(handler)
4747

4848
# Also configure SQLAlchemy to use this logger
49-
self.setup_sqlalchemy_logger(handler)
50-
self.logger.info("Logger initialized")
49+
# self.setup_sqlalchemy_logger(handler)
50+
# self.logger.info("Logger initialized")
5151

52-
def setup_sqlalchemy_logger(self, handler):
53-
sqlalchemy_loggers = [
54-
"sqlalchemy.engine",
55-
# "sqlalchemy.pool",
56-
# "sqlalchemy.dialects.postgresql",
57-
"sqlalchemy.engine.Engine",
58-
]
59-
for logger_name in sqlalchemy_loggers:
60-
logger = logging.getLogger(logger_name)
61-
logger.setLevel(get_env_logging_level())
62-
logger.handlers.clear()
63-
logger.addHandler(handler)
64-
logger.propagate = False
52+
@staticmethod
53+
def init_logger():
54+
"""
55+
Initializes the logger
56+
"""
57+
logging.basicConfig(level=get_env_logging_level())
58+
if is_local_env():
59+
# Use the default logging handler
60+
logging.info("Using default logging handler")
61+
return
62+
try:
63+
client = google.cloud.logging.Client()
64+
client.get_default_handler()
65+
client.setup_logging()
66+
logging.info("GCP logging client initialized")
67+
# return client
68+
except Exception as error:
69+
# This might happen when the GCP authorization credentials are not available.
70+
# Example, when running the tests locally
71+
logging.error(f"Error initializing the logger: {error}")
72+
# return None
73+
74+
# def setup_sqlalchemy_logger(self, handler):
75+
# sqlalchemy_loggers = [
76+
# "sqlalchemy.engine",
77+
# # "sqlalchemy.pool",
78+
# # "sqlalchemy.dialects.postgresql",
79+
# "sqlalchemy.engine.Engine",
80+
# ]
81+
# for logger_name in sqlalchemy_loggers:
82+
# logger = logging.getLogger(logger_name)
83+
# logger.setLevel(get_env_logging_level())
84+
# logger.handlers.clear()
85+
# logger.addHandler(handler)
86+
# logger.propagate = False
6587

6688
def get_logger(self):
6789
return self.logger
90+
91+
def new_logger(self):
92+
logging.basicConfig(level=get_env_logging_level())

0 commit comments

Comments
 (0)