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
相关产品推荐
相关产品推荐

