54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
import logging
|
|
from logging.handlers import RotatingFileHandler
|
|
|
|
import click
|
|
|
|
from app.core.config import settings
|
|
|
|
# logger
|
|
logger = logging.getLogger()
|
|
if settings.DEBUG:
|
|
logger.setLevel(logging.DEBUG)
|
|
else:
|
|
logger.setLevel(logging.INFO)
|
|
|
|
# 创建终端输出Handler
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setLevel(logging.DEBUG)
|
|
|
|
# 创建文件输出Handler
|
|
file_handler = RotatingFileHandler(filename=settings.LOG_PATH / 'moviepilot.log',
|
|
mode='w',
|
|
maxBytes=5 * 1024 * 1024,
|
|
backupCount=3,
|
|
encoding='utf-8')
|
|
file_handler.setLevel(logging.INFO)
|
|
level_name_colors = {
|
|
logging.DEBUG: lambda level_name: click.style(str(level_name), fg="cyan"),
|
|
logging.INFO: lambda level_name: click.style(str(level_name), fg="green"),
|
|
logging.WARNING: lambda level_name: click.style(str(level_name), fg="yellow"),
|
|
logging.ERROR: lambda level_name: click.style(str(level_name), fg="red"),
|
|
logging.CRITICAL: lambda level_name: click.style(
|
|
str(level_name), fg="bright_red"
|
|
),
|
|
}
|
|
|
|
|
|
# 定义日志输出格式
|
|
class CustomFormatter(logging.Formatter):
|
|
def format(self, record):
|
|
seperator = " " * (8 - len(record.levelname))
|
|
record.leveltext = level_name_colors[record.levelno](record.levelname + ":") + seperator
|
|
return super().format(record)
|
|
|
|
|
|
# 终端日志
|
|
console_formatter = CustomFormatter("%(leveltext)s%(filename)s - %(message)s")
|
|
console_handler.setFormatter(console_formatter)
|
|
logger.addHandler(console_handler)
|
|
|
|
# 文件日志
|
|
file_formater = CustomFormatter("【%(levelname)s】%(asctime)s - %(filename)s - %(message)s")
|
|
file_handler.setFormatter(file_formater)
|
|
logger.addHandler(file_handler)
|