Python日志记录创建空文件
我正在使用python的日志记录功能。我只想在需要记录的情况下创建日志文件。换句话说,如果没有要记录的内容,则不应创建任何日志文件 一俟Python日志记录创建空文件,python,logging,Python,Logging,我正在使用python的日志记录功能。我只想在需要记录的情况下创建日志文件。换句话说,如果没有要记录的内容,则不应创建任何日志文件 一俟 logging.basicConfig( filename=filename_log, level=logging.DEBUG, mode='w') 运行时,将创建一个空日志文件。我尝试在退出之前删除它,并使用: if ( os.stat( filename_log ).st_size == 0 ): os.remove( filename_log) 这将
logging.basicConfig( filename=filename_log, level=logging.DEBUG, mode='w')
运行时,将创建一个空日志文件。我尝试在退出之前删除它,并使用:
if ( os.stat( filename_log ).st_size == 0 ): os.remove( filename_log)
这将显示一条错误消息:
WindowsError: [Error 32] The process cannot access the file because it is being used by another process
所以我想之前应该做些别的事情
那么,有没有办法在不编写自己的日志过程的情况下不生成空日志文件
简言之:
logging.basicConfig( filename=filename_log, level=logging.DEBUG, mode='w')
logging.debug('This message should go to the log file')
正确记录,但如果没有要记录的内容,则会给出一个空文件。及
with open( filename_log, 'w') as logfile:
logging.basicConfig( stream=logfile, level=logging.DEBUG)
给出:
ValueError:I/O操作在关闭的文件上
我不熟悉Windows处理I/O的方式。在*nix系统上,我建议处理I/O流的日志函数不关闭I/O流
logging.basicConfig( filename=filename_log, level=logging.DEBUG, mode='w')
...
logging.shutdown()
if os.stat(file_name).st_size == 0 :
os.remove(filename_log)
“with open”给出了一个“IOError:[Errno 2]没有这样的文件或目录:”因此日志文件以前必须存在。您确定您在写入模式下使用open尝试了
,即使用'w'
标志with open(…,'w')
,并且在“with open()”中添加了'w'后,它确实正确地创建了文件。但现在它不会记录日志:对logging.debug()的调用现在会给出一个“AttributeError:'str'对象没有属性'write'”。我已经更改了答案,通过logging.shutdown
函数关闭日志。使用logging.shutdown,它现在可以正常工作。谢谢!我不知道我应该如何在这里标记一个正确的和最终的答案。