56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
from pathlib import Path
|
|
from sys import stdout
|
|
from loguru import logger
|
|
|
|
from conf import BASE_DIR
|
|
|
|
|
|
def log_formatter(record: dict) -> str:
|
|
"""
|
|
Formatter for log records.
|
|
:param dict record: Log object containing log metadata & message.
|
|
:returns: str
|
|
"""
|
|
colors = {
|
|
"TRACE": "#cfe2f3",
|
|
"INFO": "#9cbfdd",
|
|
"DEBUG": "#8598ea",
|
|
"WARNING": "#dcad5a",
|
|
"SUCCESS": "#3dd08d",
|
|
"ERROR": "#ae2c2c"
|
|
}
|
|
color = colors.get(record["level"].name, "#b3cfe7")
|
|
return f"<fg #70acde>{{time:YYYY-MM-DD HH:mm:ss}}</fg #70acde> | <fg {color}>{{level}}</fg {color}>: <light-white>{{message}}</light-white>\n"
|
|
|
|
|
|
def create_logger(log_name: str, file_path: str):
|
|
"""
|
|
Create custom logger for different business modules.
|
|
:param str log_name: name of log
|
|
:param str file_path: Optional path to log file
|
|
:returns: Configured logger
|
|
"""
|
|
def filter_record(record):
|
|
return record["extra"].get("business_name") == log_name
|
|
|
|
Path(BASE_DIR / file_path).parent.mkdir(exist_ok=True)
|
|
logger.add(Path(BASE_DIR / file_path), filter=filter_record, level="INFO", rotation="10 MB", retention="10 days", backtrace=True, diagnose=True)
|
|
return logger.bind(business_name=log_name)
|
|
|
|
|
|
# Remove all existing handlers
|
|
logger.remove()
|
|
# Add a standard console handler
|
|
logger.add(stdout, colorize=True, format=log_formatter)
|
|
|
|
douyin_logger = create_logger('douyin', 'logs/douyin.log')
|
|
tencent_logger = create_logger('tencent', 'logs/tencent.log')
|
|
xhs_logger = create_logger('xhs', 'logs/xhs.log')
|
|
tiktok_logger = create_logger('tiktok', 'logs/tiktok.log')
|
|
bilibili_logger = create_logger('bilibili', 'logs/bilibili.log')
|
|
kuaishou_logger = create_logger('kuaishou', 'logs/kuaishou.log')
|
|
baijiahao_logger = create_logger('baijiahao', 'logs/baijiahao.log')
|
|
xiaohongshu_logger = create_logger('xiaohongshu', 'logs/xiaohongshu.log')
|
|
ins_logger = create_logger('ins', 'logs/ins.log')
|
|
X_logger = create_logger('X', 'logs/X.log')
|