Skip to content

Commit 6b86466

Browse files
intial checks
1 parent 4522e07 commit 6b86466

File tree

4 files changed

+91
-30
lines changed

4 files changed

+91
-30
lines changed

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ ipython_config.py
105105
# This is especially recommended for binary packages to ensure reproducibility, and is more
106106
# commonly ignored for libraries.
107107
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108-
#poetry.lock
108+
poetry.lock
109109

110110
# pdm
111111
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
@@ -165,7 +165,7 @@ cython_debug/
165165
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
166166
# and can be added to the global gitignore or merged into this file. For a more nuclear
167167
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
168-
#.idea/
168+
.idea/
169169

170170
# Ruff stuff:
171171
.ruff_cache/

app/logging_config.py

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,46 @@
1-
# import logging
2-
# from pythonjsonlogger import jsonlogger
3-
#
4-
# def setup_logging():
5-
# """
6-
# Configures logging for both the application and Uvicorn.
7-
# """
8-
# # Root logger
9-
# root_logger = logging.getLogger()
10-
# root_logger.setLevel(logging.INFO)
11-
#
12-
# # JSON formatter
13-
# formatter = jsonlogger.JsonFormatter('%(asctime)s %(levelname)s %(funcName)s %(message)s %(filename)s %(lineno)d')
14-
#
15-
# # Stream handler for console output
16-
# handler = logging.StreamHandler()
17-
# handler.setFormatter(formatter)
18-
# root_logger.addHandler(handler)
19-
#
20-
# # Uvicorn access logger
21-
# uvicorn_access_logger = logging.getLogger("uvicorn.access")
22-
# uvicorn_access_logger.handlers = [handler]
23-
# uvicorn_access_logger.propagate = False
24-
#
25-
# # Uvicorn error logger
26-
# uvicorn_error_logger = logging.getLogger("uvicorn.error")
27-
# uvicorn_error_logger.handlers = [handler]
28-
# uvicorn_error_logger.propagate = False
1+
import logging
2+
from pythonjsonlogger import jsonlogger
3+
4+
5+
def setup_logging(logger_name: str = "myapp") -> logging.Logger:
6+
"""
7+
Configures logging for the application and Uvicorn, and returns a logger instance.
8+
9+
Args:
10+
logger_name (str): Name of the application logger.
11+
12+
Returns:
13+
logging.Logger: Configured application logger instance.
14+
"""
15+
# JSON formatter
16+
formatter = jsonlogger.JsonFormatter(
17+
'%(asctime)s %(levelname)s %(funcName)s %(message)s %(filename)s %(lineno)d'
18+
)
19+
20+
# Stream handler
21+
handler = logging.StreamHandler()
22+
handler.setFormatter(formatter)
23+
24+
# Root logger setup
25+
root_logger = logging.getLogger()
26+
if not root_logger.hasHandlers():
27+
root_logger.setLevel(logging.INFO)
28+
root_logger.addHandler(handler)
29+
30+
# Uvicorn access logger setup
31+
uvicorn_access_logger = logging.getLogger("uvicorn.access")
32+
uvicorn_access_logger.handlers = [handler]
33+
uvicorn_access_logger.propagate = False
34+
35+
# Uvicorn error logger setup
36+
uvicorn_error_logger = logging.getLogger("uvicorn.error")
37+
uvicorn_error_logger.handlers = [handler]
38+
uvicorn_error_logger.propagate = False
39+
40+
# Application logger
41+
app_logger = logging.getLogger(logger_name)
42+
if not app_logger.hasHandlers():
43+
app_logger.setLevel(logging.INFO)
44+
app_logger.addHandler(handler)
45+
46+
return app_logger

app/main.py

Whitespace-only changes.

app/quickapi.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from fastapi import FastAPI
2+
# from pylogs import get_logger
3+
from logging_config import setup_logging
4+
5+
# Setup logging
6+
logger = setup_logging()
7+
8+
# Initialize logger
9+
# logger = get_logger("myapp")
10+
logger.info("Logger initialized successfully")
11+
12+
# Fast API app initialization
13+
app = FastAPI(
14+
title="Favorite Colors API",
15+
description="Submit your name and favorite color",
16+
version="1.0.0"
17+
)
18+
19+
@app.get("/")
20+
async def root():
21+
logger.info("Root endpoint accessed")
22+
# logger = logging.getLogger("myapp")
23+
logger.info("Root endpoint was accessed!")
24+
25+
return {"message": "Hello World"}
26+
27+
@app.get("/healthcheck")
28+
async def healthcheck():
29+
"""
30+
Healthcheck endpoint to verify if the service is running.
31+
"""
32+
logger.info("Healthcheck endpoint accessed")
33+
return {"status": "ok"}
34+
35+
# @app.middleware("http")
36+
# async def log_requests(request: Request, call_next):
37+
# logger = logging.getLogger("myapp")
38+
# logger.info(f"Received request: {request.method} {request.url}")
39+
# response = await call_next(request)
40+
# logger.info(f"Response status: {response.status_code}")
41+
# return response
42+
43+

0 commit comments

Comments
 (0)