69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
# utils.py
|
||
|
||
import logging
|
||
import uuid
|
||
import os
|
||
import datetime
|
||
|
||
|
||
def setup_logging(log_file_path):
|
||
"""
|
||
配置应用程序的日志系统。
|
||
日志将输出到控制台和指定的日志文件。
|
||
:param log_file_path: 日志文件的完整路径。
|
||
"""
|
||
# 确保日志目录存在
|
||
log_dir = os.path.dirname(log_file_path)
|
||
if not os.path.exists(log_dir):
|
||
os.makedirs(log_dir)
|
||
|
||
# 创建一个根日志器
|
||
logger = logging.getLogger()
|
||
logger.setLevel(logging.INFO) # 设置最低日志级别为INFO
|
||
|
||
# 移除已有的处理器,防止重复日志
|
||
if logger.handlers:
|
||
for handler in logger.handlers[:]:
|
||
logger.removeHandler(handler)
|
||
|
||
# 创建一个文件处理器,用于将日志写入文件
|
||
file_handler = logging.FileHandler(log_file_path, encoding="utf-8")
|
||
file_handler.setLevel(logging.INFO) # 文件处理器级别为INFO
|
||
|
||
# 创建一个控制台处理器,用于将日志输出到控制台
|
||
console_handler = logging.StreamHandler()
|
||
console_handler.setLevel(logging.INFO) # 控制台处理器级别为INFO
|
||
|
||
# 定义日志格式
|
||
formatter = logging.Formatter(
|
||
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
||
)
|
||
file_handler.setFormatter(formatter)
|
||
console_handler.setFormatter(formatter)
|
||
|
||
# 将处理器添加到日志器
|
||
logger.addHandler(file_handler)
|
||
logger.addHandler(console_handler)
|
||
|
||
logging.info(f"日志系统已配置,日志将写入 {log_file_path}")
|
||
|
||
|
||
def generate_uuid():
|
||
"""
|
||
生成一个基于时间戳和随机数的唯一UUID字符串。
|
||
:return: 32位小写UUID字符串。
|
||
"""
|
||
# UUID4是随机生成,适合作为唯一ID
|
||
return str(uuid.uuid4())
|
||
|
||
|
||
def get_current_timestamp():
|
||
"""
|
||
获取当前时间的标准格式字符串。
|
||
:return: 例如 "2023-10-27 10:00:00"
|
||
"""
|
||
return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||
|
||
|
||
# 可以定义一个通用的错误处理装饰器或其他实用函数
|