|
1 | 1 | import logging |
2 | 2 | import os |
| 3 | +from typing import Optional |
| 4 | + |
| 5 | +TRACE = 5 |
| 6 | + |
| 7 | +logging.addLevelName(TRACE, "TRACE") |
| 8 | + |
| 9 | + |
| 10 | +DEFAULT_FORMAT = ( |
| 11 | + "%(asctime)s %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] - %(message)s" |
| 12 | +) |
3 | 13 |
|
4 | 14 |
|
5 | 15 | def get_level() -> str: |
6 | 16 | """Get the default logging level for Basilisp.""" |
7 | 17 | return os.getenv("BASILISP_LOGGING_LEVEL", "WARNING") |
8 | 18 |
|
9 | 19 |
|
10 | | -def get_handler(level: str, fmt: str) -> logging.Handler: |
| 20 | +def get_handler( |
| 21 | + level: Optional[str] = None, fmt: str = DEFAULT_FORMAT |
| 22 | +) -> logging.Handler: |
11 | 23 | """Get the default logging handler for Basilisp.""" |
12 | 24 | handler = ( |
13 | 25 | logging.StreamHandler() |
14 | 26 | if os.getenv("BASILISP_USE_DEV_LOGGER", "").lower() == "true" |
15 | 27 | else logging.NullHandler() |
16 | 28 | ) |
17 | 29 | handler.setFormatter(logging.Formatter(fmt)) |
18 | | - handler.setLevel(level) |
| 30 | + handler.setLevel(level or get_level()) |
19 | 31 | return handler |
20 | 32 |
|
21 | 33 |
|
22 | | -TRACE = 5 |
23 | | - |
24 | | -logging.addLevelName(TRACE, "TRACE") |
25 | | - |
26 | | -DEFAULT_FORMAT = ( |
27 | | - "%(asctime)s %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] - %(message)s" |
28 | | -) |
29 | | -DEFAULT_LEVEL = get_level() |
30 | | -DEFAULT_HANDLER = get_handler(DEFAULT_LEVEL, DEFAULT_FORMAT) |
| 34 | +def configure_root_logger( |
| 35 | + level: Optional[str] = None, fmt: str = DEFAULT_FORMAT |
| 36 | +) -> None: |
| 37 | + """Configure the Basilisp root logger.""" |
| 38 | + level = level or get_level() |
| 39 | + logger = logging.getLogger("basilisp") |
| 40 | + logger.setLevel(level) |
| 41 | + logger.addHandler(get_handler(level=level, fmt=fmt)) |
0 commit comments