You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python logging添加文件路径后无法写入日志文件问题求助

排查思路与解决方案

1. 确保logs目录存在

即使你验证过路径有效,程序首次运行或目录被删除时,目标目录可能尚未创建。在生成日志文件名前,先递归创建目录:

import os

working_dir = "/app_2/TSM_data_collector"
log_dir = working_dir + "/logs"
# 自动创建目录,已存在则不报错
os.makedirs(log_dir, exist_ok=True)

raw_data_dir = working_dir + "/rawdata"
clean_data_dir = working_dir + "/cleandata"

# 用os.path.join拼接路径,避免手动拼接的分隔符问题
log_file_name = os.path.join(log_dir, datetime.strftime(datetime.now(), '%Y-%m-%d') + "_tsm_orchestrator.log")
logging.config.fileConfig('logging.conf', defaults={'logfilename': log_file_name})
logger = logging.getLogger('TSM_orchestrator')

2. 检查目录写入权限

程序运行用户可能没有logs目录的写入权限,可通过以下代码快速验证:

import os

test_file = os.path.join(log_dir, "test_write_check.txt")
try:
    with open(test_file, 'w') as f:
        f.write("permission test")
    os.remove(test_file)
    print("目录写入权限正常")
except PermissionError:
    print("无logs目录写入权限,请调整目录权限或切换运行用户")
except Exception as e:
    print(f"写入测试失败:{str(e)}")

若确为权限问题,可通过终端命令调整:

# 调整目录权限
chmod 755 /app_2/TSM_data_collector/logs
# 变更目录所属用户组
chown your_username:your_group /app_2/TSM_data_collector/logs

3. 验证日志路径变量替换是否正确

在加载logging配置前,打印日志路径确认格式是否正确:

print(f"生成的日志路径:{log_file_name}")

检查是否存在重复斜杠(如/logs//xxx.log)或拼写错误,避免因路径格式异常导致的写入失败。

4. 确认FileHandler配置格式无误

核对logging.conf中fileHandler的参数格式:

[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=baseFormatter
args=('%(logfilename)s','a')

确保args是元组格式,引号、逗号位置正确,%(logfilename)s能被fileConfig传入的defaults值正常替换。


内容的提问来源于stack exchange,提问作者Morgan Mains

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:45:21