|
1 | | -from loguru import logger |
2 | | -from django.conf import settings |
| 1 | +import copy |
3 | 2 | import logging |
| 3 | + |
| 4 | +from django.conf import settings |
| 5 | +from loguru import logger |
| 6 | + |
4 | 7 | from core.log.utils import InterceptHandler |
5 | 8 |
|
6 | 9 |
|
| 10 | +def _add_logger_handler(path: str, level: str) -> None: |
| 11 | + """ |
| 12 | + Attach loguru handler, falling back to synchronous mode if multiprocessing |
| 13 | + queues are not permitted (e.g. limited dev envs). |
| 14 | + """ |
| 15 | + kwargs = copy.deepcopy(settings.LOGURU_LOGGING) |
| 16 | + try: |
| 17 | + logger.add(path, level=level, **kwargs) |
| 18 | + except PermissionError: |
| 19 | + kwargs.pop("enqueue", None) |
| 20 | + logger.add(path, level=level, **kwargs) |
| 21 | + |
| 22 | + |
7 | 23 | class CustomLoguruMiddleware: |
8 | 24 | def __init__(self, get_response): |
9 | 25 | self.get_response = get_response |
10 | 26 | logging.basicConfig(handlers=[InterceptHandler()], level=0, force=True) |
11 | 27 |
|
12 | 28 | if settings.DEBUG: |
13 | | - logger.add( |
14 | | - f"{settings.BASE_DIR}/log/debug.log", |
15 | | - level="DEBUG", |
16 | | - **settings.LOGURU_LOGGING, |
17 | | - ) |
18 | | - logger.add( |
19 | | - f"{settings.BASE_DIR}/log/info.log", |
20 | | - level="INFO", |
21 | | - **settings.LOGURU_LOGGING, |
22 | | - ) |
23 | | - logger.add( |
24 | | - f"{settings.BASE_DIR}/log/warning.log", |
25 | | - level="WARNING", |
26 | | - **settings.LOGURU_LOGGING, |
27 | | - ) |
| 29 | + _add_logger_handler(f"{settings.BASE_DIR}/log/debug.log", "DEBUG") |
| 30 | + _add_logger_handler(f"{settings.BASE_DIR}/log/info.log", "INFO") |
| 31 | + _add_logger_handler(f"{settings.BASE_DIR}/log/warning.log", "WARNING") |
28 | 32 |
|
29 | 33 | def __call__(self, request): |
30 | 34 | response = self.get_response(request) |
|
0 commit comments