Skip to content

Commit 1170947

Browse files
committed
feat: Add application log config and initialize in app entrypoints
1 parent d5e5d75 commit 1170947

File tree

4 files changed

+43
-10
lines changed

4 files changed

+43
-10
lines changed

src/api/server_main.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
"""FastAPI server file"""
2+
import logging
3+
24
import uvicorn
35
from fastapi import FastAPI
46

57
from api.routers import map
8+
from application_logging import init_logging
9+
from dcd_mapping.version import dcd_mapping_version
10+
11+
init_logging()
12+
_logger = logging.getLogger(__name__)
13+
_logger.info("dcd-mapping API: %s", dcd_mapping_version)
614

715
app = FastAPI()
816

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"""Application logging initialization"""
2+
3+
import logging
4+
import os
5+
6+
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO").upper()
7+
8+
9+
def init_logging() -> None:
10+
"""Initialize application-wide logging with configured log level and format.
11+
12+
This sets the root logger's level based on the LOG_LEVEL environment variable
13+
and applies a consistent log message format across the application.
14+
"""
15+
logging.basicConfig(
16+
format="%(asctime)s %(levelname)s %(name)s: %(message)s",
17+
level=getattr(logging, LOG_LEVEL, logging.INFO),
18+
force=True,
19+
)

src/dcd_mapping/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,20 @@
55
See the mapping manuscript for more information:
66
https://www.biorxiv.org/content/10.1101/2023.06.20.545702v1
77
"""
8+
import logging
9+
810
from dotenv import load_dotenv
911

12+
from application_logging import init_logging
13+
1014
from .main import map_scoreset, map_scoreset_urn
1115
from .version import dcd_mapping_version
1216

1317
__all__ = ["map_scoreset", "map_scoreset_urn"]
1418
__version__ = dcd_mapping_version
1519

1620
load_dotenv()
21+
22+
init_logging()
23+
_logger = logging.getLogger(__name__)
24+
_logger.info("dcd-mapping: %s", dcd_mapping_version)

src/dcd_mapping/cli.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import click
88

9+
from application_logging import init_logging
910
from dcd_mapping.exceptions import (
1011
AlignmentError,
1112
ResourceAcquisitionError,
@@ -15,8 +16,6 @@
1516
from dcd_mapping.main import map_scoreset_urn
1617
from dcd_mapping.schemas import VrsVersion
1718

18-
_logger = logging.getLogger(__name__)
19-
2019

2120
@click.command(no_args_is_help=True)
2221
@click.argument("urn", nargs=1)
@@ -66,14 +65,13 @@ def cli(
6665
:param urn: scoreset URN
6766
:param debug: if True, enable debug logging
6867
""" # noqa: D301
69-
log_level = logging.DEBUG if debug else logging.INFO
70-
logging.basicConfig(
71-
filename="dcd-mapping.log",
72-
format="%(asctime)s %(levelname)s:%(name)s:%(message)s",
73-
level=log_level,
74-
force=True,
75-
)
76-
_logger.debug("debug logging enabled")
68+
init_logging()
69+
_logger = logging.getLogger(__name__)
70+
71+
if debug:
72+
logging.getLogger().setLevel(logging.DEBUG)
73+
_logger.debug("debug logging enabled")
74+
7775
try:
7876
asyncio.run(
7977
map_scoreset_urn(urn, output, vrs_version, prefer_genomic, silent=False)

0 commit comments

Comments
 (0)