Python日志记录会创建空文件

时间:2015-05-12 08:44:34

标签: 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)

,它会显示错误消息:

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 operation on closed file

1 个答案:

答案 0 :(得分:0)

我不熟悉Windows处理I / O的方式。在* nix系统上,我建议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)