diff --git a/README.md b/README.md index b7b3ab3..074341d 100644 --- a/README.md +++ b/README.md @@ -27,5 +27,5 @@ Built to showcase best practices in Python backend development and serve as a so poetry install # Run the development server -poetry run uvicorn app.main:app --reload +poetry run uvicorn app.main:app --reload --log-config=log_config.yml ``` diff --git a/app/services/user_service.py b/app/services/user_service.py index b236fb6..ee19239 100644 --- a/app/services/user_service.py +++ b/app/services/user_service.py @@ -1,14 +1,21 @@ +import logging + from app.models.user import User, UserCreate +log = logging.getLogger(__name__) + _fake_db: list[User] = [] async def save_user(user: UserCreate) -> User: + log.debug("Creating user") user_id = len(_fake_db) + 1 new_user = User(id=user_id, **user.model_dump()) _fake_db.append(new_user) + log.info("User created") return new_user async def get_all_users() -> list[User]: + log.debug("Reading all users") return _fake_db diff --git a/log_config.yml b/log_config.yml new file mode 100644 index 0000000..49409d6 --- /dev/null +++ b/log_config.yml @@ -0,0 +1,30 @@ +version: 1 +formatters: + default: + format: '%(asctime)s | %(levelname)-8s | %(name)-30s | %(message)s' + datefmt: '%Y-%m-%d %H:%M:%S' +handlers: + default: + class: logging.StreamHandler + formatter: default + stream: ext://sys.stdout +loggers: + uvicorn: + handlers: [ default ] + level: INFO + propagate: false + uvicorn.error: + handlers: [ default ] + level: INFO + propagate: false + uvicorn.access: + handlers: [ default ] + level: INFO + propagate: false + app: + handlers: [ default ] + level: DEBUG + propagate: false +root: + level: INFO + handlers: [ default ]