36 lines
1.0 KiB
Python
36 lines
1.0 KiB
Python
import logging
|
|
import os
|
|
from logging.handlers import TimedRotatingFileHandler
|
|
|
|
|
|
def setup_logging(cfg: dict) -> None:
|
|
log_cfg = cfg.get("logging", {})
|
|
if not log_cfg.get("enabled", True):
|
|
return
|
|
|
|
path = log_cfg.get("path", "/var/server-bot/bot.log")
|
|
rotate_when = log_cfg.get("rotate_when", "W0")
|
|
backup_count = int(log_cfg.get("backup_count", 8))
|
|
level = str(log_cfg.get("level", "INFO")).upper()
|
|
|
|
os.makedirs(os.path.dirname(path), exist_ok=True)
|
|
|
|
root = logging.getLogger()
|
|
for handler in root.handlers:
|
|
if isinstance(handler, TimedRotatingFileHandler) and handler.baseFilename == path:
|
|
return
|
|
|
|
handler = TimedRotatingFileHandler(
|
|
path,
|
|
when=rotate_when,
|
|
interval=1,
|
|
backupCount=backup_count,
|
|
encoding="utf-8",
|
|
utc=True,
|
|
)
|
|
formatter = logging.Formatter("%(asctime)s\t%(levelname)s\t%(name)s\t%(message)s")
|
|
handler.setFormatter(formatter)
|
|
|
|
root.setLevel(level)
|
|
root.addHandler(handler)
|