#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ PerToolBox Server - 日志工具 Copyright (C) 2024 Sea Network Technology Studio Author: Canglan License: AGPL v3 """ import logging import sys from pathlib import Path from ..config import settings def setup_logger(name: str = "pertoolbox") -> logging.Logger: logger = logging.getLogger(name) if logger.handlers: return logger level = logging.DEBUG if settings.DEBUG else logging.INFO logger.setLevel(level) # 控制台输出 console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(level) console_format = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) console_handler.setFormatter(console_format) logger.addHandler(console_handler) # 文件输出 log_dir = Path("logs") log_dir.mkdir(exist_ok=True) file_handler = logging.FileHandler(log_dir / "app.log") file_handler.setLevel(level) file_format = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s' ) file_handler.setFormatter(file_format) logger.addHandler(file_handler) return logger logger = setup_logger()