问题描述
我被要求将连续运行的 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 (将#修改为@)