Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python日志记录创建空文件_Python_Logging - Fatal编程技术网

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) 这将

我正在使用python的日志记录功能。我只想在需要记录的情况下创建日志文件。换句话说,如果没有要记录的内容,则不应创建任何日志文件

一俟

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,它现在可以正常工作。谢谢!我不知道我应该如何在这里标记一个正确的和最终的答案。