Python-退出前记录最后一条退出消息

时间:2019-07-05 21:36:18

标签: python logging python-3.7

我有一个编写的记录器模块(它继承自logging.Logger,但我认为这不是讨论的重要细节)

我想在退出之前写一条最后一条消息,该消息将包含有关自脚本启动以来花费了多长时间的信息,依此类推。当脚本正常退出,调用sys.exit()并引发未捕获的异常(例如assert失败)时,它应该可以工作。

我不确定执行此操作的正确方法是什么。我正在考虑使用将在__del__上写消息的全局变量,但是我知道在python中并不总是这样。我考虑过使用atexit,但不确定是否可以确保调用它,也不确定导入的模块是否可用(我也希望能够将消息写入远程服务器)。

我正在使用Python3.7

1 个答案:

答案 0 :(得分:0)

检出atexit模块。它适用于异常和sys.exit

import atexit
from datetime import datetime
from time import sleep

time_start = None

def main():
    global time_start
    time_start = datetime.now()
    sleep(2)
    atexit.register(log_total_time)


def log_total_time():
    print('Elapsed:',datetime.now() - time_start)


if __name__ == "__main__":
    main()

输出:

Elapsed: 0:00:02.417707

https://docs.python.org/3/library/atexit.html