Skip to content

Commit 6c984f5

Browse files
Enhance logging
1 parent 015232e commit 6c984f5

File tree

8 files changed

+38
-28
lines changed

8 files changed

+38
-28
lines changed

‎app/config.py‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from pydantic_settings import BaseSettings
2+
from typing import Literal
23

34

45
class Settings(BaseSettings):
5-
environment: str = "DEV"
6+
environment: Literal["PROD", "DEV", "LOCAL"] = "LOCAL"
67

78
@property
89
def is_prod(self) -> bool:
@@ -11,6 +12,10 @@ def is_prod(self) -> bool:
1112
@property
1213
def is_dev(self) -> bool:
1314
return self.environment == "DEV"
15+
16+
@property
17+
def is_local(self) -> bool:
18+
return self.environment == "LOCAL"
1419

1520

16-
settings = Settings()
21+
settings = Settings()
File renamed without changes.

‎app/logging/google/__init__.py‎

Whitespace-only changes.

‎app/cloud_logging/filter.py‎ renamed to ‎app/logging/google/filter.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from google.cloud.logging_v2.handlers import CloudLoggingFilter
55

6-
from app.cloud_logging.middleware import http_request_context, cloud_trace_context
6+
from app.logging.google.middleware import http_request_context, cloud_trace_context
77

88

99
class GoogleCloudLogFilter(CloudLoggingFilter):

‎app/cloud_logging/middleware.py‎ renamed to ‎app/logging/google/middleware.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import contextvars
21
import sys
2+
import contextvars
33

44
from fastapi.logger import logger
55
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
from fastapi import FastAPI
2+
from fastapi.logger import logger
13
import logging
2-
34
import google.cloud.logging
45

5-
from app.cloud_logging.filter import GoogleCloudLogFilter
6-
from fastapi.logger import logger
6+
from app.logging.google.filter import GoogleCloudLogFilter
7+
from app.logging.google.middleware import LoggingMiddleware
78

89

9-
def setup_logging():
10+
def setup_google_logging(app: FastAPI = None):
1011
client = google.cloud.logging.Client()
1112
handler = client.get_default_handler()
1213
handler.setLevel(logging.DEBUG)
@@ -15,3 +16,5 @@ def setup_logging():
1516
logger.handlers = []
1617
logger.addHandler(handler)
1718
logger.setLevel(logging.DEBUG)
19+
20+
app.add_middleware(LoggingMiddleware)

‎app/logging/setup.py‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from fastapi import FastAPI
2+
from fastapi.logger import logger
3+
import logging
4+
5+
from app.config import settings
6+
from app.logging.google.setup import setup_google_logging
7+
8+
def setup_local_logging():
9+
logger.setLevel(logging.DEBUG)
10+
console_handler = logging.StreamHandler()
11+
console_handler.setLevel(logging.DEBUG)
12+
formatter = logging.Formatter(
13+
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
14+
)
15+
console_handler.setFormatter(formatter)
16+
logger.addHandler(console_handler)
17+
18+
def setup_logging(app: FastAPI):
19+
setup_local_logging() if settings.is_local else setup_google_logging(app)

‎app/main.py‎

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,11 @@
1-
import logging
1+
from fastapi import FastAPI
22
from fastapi.logger import logger
3-
from app.cloud_logging.middleware import LoggingMiddleware
4-
from app.cloud_logging.setup import setup_logging
53

6-
from fastapi import FastAPI
74
from app.config import settings
8-
5+
from app.logging.setup import setup_logging
96

107
app = FastAPI()
11-
12-
if settings.is_prod:
13-
setup_logging()
14-
app.add_middleware(LoggingMiddleware)
15-
else:
16-
# Setup local logging
17-
logger.setLevel(logging.DEBUG)
18-
console_handler = logging.StreamHandler()
19-
console_handler.setLevel(logging.DEBUG)
20-
formatter = logging.Formatter(
21-
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
22-
)
23-
console_handler.setFormatter(formatter)
24-
logger.addHandler(console_handler)
25-
8+
setup_logging(app)
269

2710
@app.get("/")
2811
async def root():

0 commit comments

Comments
 (0)