Compare commits
2 commits
3118e576da
...
9e7d5d9add
| Author | SHA1 | Date | |
|---|---|---|---|
| 9e7d5d9add | |||
| c1c4215b7b |
5 changed files with 101 additions and 0 deletions
18
configs/logging_dev.yaml
Normal file
18
configs/logging_dev.yaml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
version: 1
|
||||
disable_existing_loggers: false
|
||||
|
||||
formatters:
|
||||
dev_formatter:
|
||||
format: "%(asctime)s | %(levelname)-7s | %(name)s | %(message)s"
|
||||
datefmt: "%H:%M:%S"
|
||||
|
||||
handlers:
|
||||
console:
|
||||
class: logging.StreamHandler
|
||||
level: TRACE
|
||||
formatter: dev_formatter
|
||||
stream: ext://sys.stdout
|
||||
|
||||
root:
|
||||
level: TRACE
|
||||
handlers: [console]
|
||||
18
configs/logging_prod.yaml
Normal file
18
configs/logging_prod.yaml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
version: 1
|
||||
disable_existing_loggers: false
|
||||
|
||||
formatters:
|
||||
prod_formatter:
|
||||
format: "%(asctime)s | %(levelname)-7s | %(name)s | %(message)s"
|
||||
datefmt: "%Y-%m-%d %H:%M:%S"
|
||||
|
||||
handlers:
|
||||
console:
|
||||
class: logging.StreamHandler
|
||||
level: INFO
|
||||
formatter: prod_formatter
|
||||
stream: ext://sys.stdout
|
||||
|
||||
root:
|
||||
level: INFO
|
||||
handlers: [file]
|
||||
18
configs/logging_test.yaml
Normal file
18
configs/logging_test.yaml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
version: 1
|
||||
disable_existing_loggers: false
|
||||
|
||||
formatters:
|
||||
test_formatter:
|
||||
format: "%(asctime)s | %(levelname)-7s | %(name)s | %(message)s"
|
||||
datefmt: "%Y-%m-%d %H:%M:%S"
|
||||
|
||||
handlers:
|
||||
console:
|
||||
class: logging.StreamHandler
|
||||
level: DEBUG
|
||||
formatter: test_formatter
|
||||
stream: ext://sys.stdout
|
||||
|
||||
root:
|
||||
level: DEBUG
|
||||
handlers: [file]
|
||||
0
src/core/__init__.py
Normal file
0
src/core/__init__.py
Normal file
47
src/core/logger.py
Normal file
47
src/core/logger.py
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import logging
|
||||
import logging.config
|
||||
import os
|
||||
import yaml
|
||||
from pathlib import Path
|
||||
|
||||
TRACE_LEVEL_NUM = 5
|
||||
logging.addLevelName(TRACE_LEVEL_NUM, "TRACE")
|
||||
|
||||
def trace(self, message, *args, **kws):
|
||||
"""
|
||||
Trace для логирования
|
||||
Args:
|
||||
message (_type_): сообщение
|
||||
"""
|
||||
if self.isEnabledFor(TRACE_LEVEL_NUM):
|
||||
self._log(TRACE_LEVEL_NUM, message, args, **kws)
|
||||
|
||||
logging.Logger.trace = trace
|
||||
|
||||
def setup_logging():
|
||||
"""
|
||||
Сетапит логирование по конфигу
|
||||
Папки конфига захардкодены внутри проекта
|
||||
"""
|
||||
env = os.getenv("ENVIRONMENT", "dev").lower()
|
||||
root_dir = Path(__file__).resolve().parent.parent.parent # .parent.parent.parent -> AGENT (корень проекта)
|
||||
config_path = root_dir / "configs" / f"logging_{env}.yaml"
|
||||
|
||||
if config_path.exists():
|
||||
with open(config_path, "rt", encoding="utf-8") as f:
|
||||
try:
|
||||
config = yaml.safe_load(f)
|
||||
logging.config.dictConfig(config)
|
||||
logging.getLogger(__name__).info(f"Логирование настроено из: {config_path}")
|
||||
except Exception as e:
|
||||
print(f"Ошибка при парсинге {config_path}: {e}")
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
else:
|
||||
print(f"ВНИМАНИЕ: Конфиг {config_path} не найден. Базовая настройка (INFO).")
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
|
||||
setup_logging()
|
||||
|
||||
def get_logger(name: str) -> logging.Logger:
|
||||
return logging.getLogger(name)
|
||||
Loading…
Add table
Add a link
Reference in a new issue