Python - 在日志文件不可用后重新启动日志文件处理程序 错误跟踪问题

问题描述

我被要求将连续运行的 Python 应用程序记录到 SMB 共享上的日志文件中。

问题是当 python 应用程序仍在运行时,如果 SMB 共享脱机(修补/网络问题等),则会引发流错误(由于文件丢失),文件处理程序一旦文件再次可用,就不会恢复,因此不会写入进一步的日志。

错误跟踪

root@7cd7f965a7b3:/tensorflow# git pull
fatal: not a git repository (or any of the parent directories): .git

问题

是否可以捕获失败状态,等待一段时间,然后请求处理程序重新打开日志文件


我通过将文件处理程序指向 USB 驱动器 (D:/) 来模拟状态,该驱动器被移除然后重新插入:

--- Logging error ---
Traceback (most recent call last):
  File "C:\Program Files (x86)\python38-32\lib\logging\handlers.py",line 69,in emit
    if self.shouldRollover(record):
  File "C:\Program Files (x86)\python38-32\lib\logging\handlers.py",line 186,in shouldRollover
    self.stream.seek(0,2)  #due to non-posix-compliant Windows feature
PermissionError: [Errno 13] Permission denied

日志仍然从 logger.error 写入本地 C:/ 驱动器,因为这是由第二个文件处理程序执行的,但是一旦文件可用一次,就不再写入 D:/info.log 中的日志文件再次。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...