60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
import logging
|
||
import os
|
||
import inspect
|
||
from datetime import datetime
|
||
from pathlib import Path
|
||
|
||
# MySQL 配置
|
||
db_config = {
|
||
'host': '172.18.0.5',
|
||
'user': 'root',
|
||
'password': 'mysqlpw',
|
||
'database': 'stockdb'
|
||
}
|
||
|
||
log_dir_prefix = '../log'
|
||
|
||
global_share_data_dir = '/root/sharedata'
|
||
global_stock_data_dir = '/root/hostdir/stock_data'
|
||
|
||
# 获取log目录
|
||
def get_log_directory():
|
||
"""
|
||
获取项目根目录下的 log 目录路径。如果 log 目录不存在,则自动创建。
|
||
"""
|
||
# 获取当前文件所在目录
|
||
current_dir = Path(__file__).resolve().parent
|
||
|
||
# 找到项目根目录,假设项目根目录下有一个 log 文件夹
|
||
project_root = current_dir
|
||
while project_root.name != 'src' and project_root != project_root.parent:
|
||
project_root = project_root.parent
|
||
project_root = project_root.parent # 回到项目根目录
|
||
|
||
# 确保 log 目录存在
|
||
log_dir = project_root / 'log'
|
||
log_dir.mkdir(parents=True, exist_ok=True)
|
||
|
||
return log_dir
|
||
|
||
def get_caller_filename():
|
||
# 获取调用 setup_logging 的脚本文件名
|
||
caller_frame = inspect.stack()[2]
|
||
caller_filename = os.path.splitext(os.path.basename(caller_frame.filename))[0]
|
||
return caller_filename
|
||
|
||
# 设置日志配置
|
||
def setup_logging(log_filename=None):
|
||
# 如果未传入 log_filename,则使用当前脚本名称作为日志文件名
|
||
if log_filename is None:
|
||
caller_filename = get_caller_filename()
|
||
common_log_dir = get_log_directory()
|
||
current_date = datetime.now().strftime('%Y%m%d')
|
||
# 拼接 log 文件名,将日期加在扩展名前
|
||
log_filename = f'{common_log_dir}/{caller_filename}_{current_date}.log'
|
||
|
||
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s [%(filename)s:%(lineno)d] (%(funcName)s) - %(message)s',
|
||
handlers=[
|
||
logging.FileHandler(log_filename),
|
||
logging.StreamHandler()
|
||
]) |