python log日志记录 进程结束手动关闭log

我们直接使用log

logging的原理机制是在进程全部结束后才会随之结束

那么对于不同文件内容写入不同的log的时候

就会出现 前面的log内容越来越多 的问题

这个时候查阅了blog发现没有人解决这个问题去看官方文档

logging.shutdown()
Informs the logging system to perform an orderly shutdown by flushing and closing all handlers. This should be called at application exit and no further use of the logging system should be made after this call.
for foo in range(0, 10):
    file_name = "./out/k" + str(foo) + ".log"
    logger = logging.getLogger()  # 实例化一个logger对象
    logger.setLevel(logging.DEBUG)  # 设置初始显示级别

    # 创建一个文件句柄
    file_handle = logging.FileHandler(file_name, encoding="UTF-8", mode='w')

    # 创建一个流句柄
    # stream_handle = logging.StreamHandler()

    # 创建一个输出格式
    fmt = logging.Formatter(f"{'-' * 40}\n"
                            "> %(asctime)s - %(levelname)s - %(filename)s - "
                            "[line:%(lineno)d] -"
                            "  %(message)s\n",
                            datefmt="%a, %d %b %Y"
                                    "%H:%M:%S"
                            )

    file_handle.setFormatter(fmt)  # 文件句柄设置格式
    # stream_handle.setFormatter(fmt)  # 流句柄设置格式

    logger.addHandler(file_handle)  # logger对象绑定文件句柄

    # 打印
    logging.info(" process " + str(foo))

    logging.shutdown()

 

logging.shutdown()¶

通过刷新和关闭所有处理程序来通知日志记录系统执行有序的关闭。这应该在应用程序出口处调用,并且在此调用之后不应进一步使用日志记录系统。

 

这样就解决了log无法关闭不停续写的问题

你可能感兴趣的:(Python)