返回 Social Auto Upload
log.py
根目录 / utils / log.py
1 import sys
2 from pathlib import Path
3 from loguru import logger
4
5 from conf import BASE_DIR
6
7
8 if hasattr(sys.stdout, "reconfigure"):
9 sys.stdout.reconfigure(encoding="utf-8", errors="replace")
10 if hasattr(sys.stderr, "reconfigure"):
11 sys.stderr.reconfigure(encoding="utf-8", errors="replace")
12
13
14 def log_formatter(record: dict) -> str:
15 """
16 Formatter for log records.
17 :param dict record: Log object containing log metadata & message.
18 :returns: str
19 """
20 colors = {
21 "TRACE": "#cfe2f3",
22 "INFO": "#9cbfdd",
23 "DEBUG": "#8598ea",
24 "WARNING": "#dcad5a",
25 "SUCCESS": "#3dd08d",
26 "ERROR": "#ae2c2c"
27 }
28 color = colors.get(record["level"].name, "#b3cfe7")
29 return f"<fg #70acde>{{time:YYYY-MM-DD HH:mm:ss}}</fg #70acde> | <fg {color}>{{level}}</fg {color}>: <light-white>{{message}}</light-white>\n"
30
31
32 def create_logger(log_name: str, file_path: str):
33 """
34 Create custom logger for different business modules.
35 :param str log_name: name of log
36 :param str file_path: Optional path to log file
37 :returns: Configured logger
38 """
39 def filter_record(record):
40 return record["extra"].get("business_name") == log_name
41
42 Path(BASE_DIR / file_path).parent.mkdir(exist_ok=True)
43 logger.add(Path(BASE_DIR / file_path), filter=filter_record, level="INFO", rotation="10 MB", retention="10 days", backtrace=True, diagnose=True)
44 return logger.bind(business_name=log_name)
45
46
47 # Remove all existing handlers
48 logger.remove()
49 # Add a standard console handler
50 logger.add(sys.stdout, colorize=True, format=log_formatter)
51
52 douyin_logger = create_logger('douyin', 'logs/douyin.log')
53 tencent_logger = create_logger('tencent', 'logs/tencent.log')
54 xhs_logger = create_logger('xhs', 'logs/xhs.log')
55 tiktok_logger = create_logger('tiktok', 'logs/tiktok.log')
56 bilibili_logger = create_logger('bilibili', 'logs/bilibili.log')
57 kuaishou_logger = create_logger('kuaishou', 'logs/kuaishou.log')
58 baijiahao_logger = create_logger('baijiahao', 'logs/baijiahao.log')
59 xiaohongshu_logger = create_logger('xiaohongshu', 'logs/xiaohongshu.log')
60 youtube_logger = create_logger('youtube', 'logs/youtube.log')
61
61 lines PYTHON