如何记录停止的Python脚本的控制台记录?

时间:2018-03-29 23:23:13

标签: python python-2.7

我的脚本中有以下代码,每次运行脚本时都会创建一个控制台记录日志:

class Logger(object):
    def __init__(self):
        pathLogs = 'logs/'
        if not os.path.isdir(pathLogs):
            os.makedirs(pathLogs)
        date_stamp = str(datetime.datetime.now()).split('.')[0]
        date_stamp = date_stamp.replace(" ", "_").replace(":", "")
        file_name = pathLogs + date_stamp + ".log"
        self.terminal = sys.stdout
        self.log = open(file_name, "a")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)
sys.stdout = Logger()

当脚本运行完成时它可以正常工作,但是如果你打断它,你在控制台中看到的记录都不会保存在日志文件中。每次运行脚本时如何将记录保存在日志文件中,无论它是否被中断?

1 个答案:

答案 0 :(得分:0)

我认为你要找的是signal module

我们假设你按CTRL + C来中断你的代码。收到中断信号后,您需要做的是:

import signal
import sys

def my_callback(signal, frame):

    # Do your stuff...
    print("I have been killed!")
    sys.exit(0)

signal.signal(signal.SIGINT, my_callback)  # this is your handler

基本上,一旦收到CTRL + C(= SIGINT信号),会发生什么事情,你的回调被调用并做你想做的任何事情。

有关详细信息,与signal doc一样,int static_assert非常明确且有用。 希望这有帮助!