Python logging and rotating files

后端 未结 4 1540
被撕碎了的回忆
被撕碎了的回忆 2020-12-14 06:09

I have a python program that is writing to a log file that is being rotated by Linux\'s logrotate command. When this happens I need to signal my program to stop writing to

4条回答
  •  无人及你
    2020-12-14 06:56

    Don't use logging.basicConfig, use WatchedFileHandler. Here's how to use it.

    import time
    import logging
    import logging.handlers
    
    def log_setup():
        log_handler = logging.handlers.WatchedFileHandler('my.log')
        formatter = logging.Formatter(
            '%(asctime)s program_name [%(process)d]: %(message)s',
            '%b %d %H:%M:%S')
        formatter.converter = time.gmtime  # if you want UTC time
        log_handler.setFormatter(formatter)
        logger = logging.getLogger()
        logger.addHandler(log_handler)
        logger.setLevel(logging.DEBUG)
    
    log_setup()
    logging.info('Hello, World!')
    import os
    os.rename('my.log', 'my.log-old')
    logging.info('Hello, New World!')
    

提交回复
热议问题