98 lines
2.8 KiB
Python
98 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
日志配置模块
|
||
为多进程录音系统提供日志记录功能
|
||
"""
|
||
|
||
import logging
|
||
import os
|
||
import sys
|
||
from datetime import datetime
|
||
from typing import Optional
|
||
|
||
def setup_process_logger(process_name: str, log_dir: str = "logs") -> logging.Logger:
|
||
"""
|
||
为进程设置日志记录器
|
||
|
||
Args:
|
||
process_name: 进程名称(用于日志文件名)
|
||
log_dir: 日志目录路径
|
||
|
||
Returns:
|
||
配置好的日志记录器
|
||
"""
|
||
# 创建日志目录
|
||
if not os.path.exists(log_dir):
|
||
os.makedirs(log_dir)
|
||
|
||
# 生成日志文件名(包含时间戳)
|
||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||
log_file = os.path.join(log_dir, f"{process_name}_{timestamp}.log")
|
||
|
||
# 创建日志记录器
|
||
logger = logging.getLogger(f"{process_name}_logger")
|
||
logger.setLevel(logging.DEBUG)
|
||
|
||
# 清除现有的处理器
|
||
logger.handlers.clear()
|
||
|
||
# 文件处理器(记录所有级别)
|
||
file_handler = logging.FileHandler(log_file, encoding='utf-8')
|
||
file_handler.setLevel(logging.DEBUG)
|
||
|
||
# 控制台处理器(只记录INFO及以上级别)
|
||
console_handler = logging.StreamHandler(sys.stdout)
|
||
console_handler.setLevel(logging.INFO)
|
||
|
||
# 创建格式化器
|
||
file_formatter = logging.Formatter(
|
||
'%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||
datefmt='%Y-%m-%d %H:%M:%S'
|
||
)
|
||
|
||
console_formatter = logging.Formatter(
|
||
'%(asctime)s - %(levelname)s - %(message)s',
|
||
datefmt='%H:%M:%S'
|
||
)
|
||
|
||
# 设置格式化器
|
||
file_handler.setFormatter(file_formatter)
|
||
console_handler.setFormatter(console_formatter)
|
||
|
||
# 添加处理器
|
||
logger.addHandler(file_handler)
|
||
logger.addHandler(console_handler)
|
||
|
||
logger.info(f"日志系统初始化完成 - 进程: {process_name}")
|
||
logger.info(f"日志文件: {log_file}")
|
||
|
||
return logger
|
||
|
||
class ProcessLogger:
|
||
"""进程日志包装器"""
|
||
|
||
def __init__(self, process_name: str, log_dir: str = "logs"):
|
||
self.process_name = process_name
|
||
self.logger = setup_process_logger(process_name, log_dir)
|
||
|
||
def debug(self, message: str):
|
||
"""调试日志"""
|
||
self.logger.debug(f"[{self.process_name}] {message}")
|
||
|
||
def info(self, message: str):
|
||
"""信息日志"""
|
||
self.logger.info(f"[{self.process_name}] {message}")
|
||
|
||
def warning(self, message: str):
|
||
"""警告日志"""
|
||
self.logger.warning(f"[{self.process_name}] {message}")
|
||
|
||
def error(self, message: str):
|
||
"""错误日志"""
|
||
self.logger.error(f"[{self.process_name}] {message}")
|
||
|
||
def critical(self, message: str):
|
||
"""严重错误日志"""
|
||
self.logger.critical(f"[{self.process_name}] {message}") |