如何在Python中重建日志文件?

时间:2013-01-22 09:27:13

标签: python

Python的程序A:

LOG_PATH = fdoc_log + "/store_plus.log"
 FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
 logging.basicConfig(filename=LOG_PATH, filemode = 'w', level=logging.DEBUG, format=FORMAT)

bash程序B:

 mv store_plus.log store_plus.log.bk

程序A将在后台运行而不会停止。什么时候 程序B删除store_plus.log文件,程序A也不能写日志。 如果我希望程序A重建store_plus.log,如何解决? 谢谢

PS:方式:

 f = open(LOG_PATH, "a")
 f.close()

它不起作用。

2 个答案:

答案 0 :(得分:0)

pymotw-logging取得的一个例子以及Doug Hellmann的所有功劳。

import glob
import logging
import logging.handlers

LOG_FILENAME = '/tmp/logging_rotatingfile_example.out'

# Set up a specific logger with our desired output level

my_logger = logging.getLogger('MyLogger')
my_logger.setLevel(logging.DEBUG)

# Add the log message handler to the logger
handler = logging.handlers.RotatingFileHandler(LOG_FILENAME, maxBytes=20, backupCount=5)

my_logger.addHandler(handler)

# Log some messages
for i in range(20):
   my_logger.debug('i = %d' % i)

# See what files are created
logfiles = glob.glob('%s*' % LOG_FILENAME)

for filename in logfiles:
   print filename

答案 1 :(得分:0)

WatchedFileHandler可以采用这种方法:

    logger = logging.getLogger('simple_example')
    logger.setLevel(logging.DEBUG)

    ch = logging.handlers.WatchedFileHandler('a_log')
    ch.setLevel(logging.DEBUG)

    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

    ch.setFormatter(formatter)
    logger.addHandler(ch)