我的脚本中有以下代码,每次运行脚本时都会创建一个控制台记录日志:
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()
当脚本运行完成时它可以正常工作,但是如果你打断它,你在控制台中看到的记录都不会保存在日志文件中。每次运行脚本时如何将记录保存在日志文件中,无论它是否被中断?
答案 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
非常明确且有用。
希望这有帮助!