Python 将打印print的内容保存到日志文件

import sys
import datetime

class Logger(object):
    def __init__(self, filename, stream=sys.stdout):
        self.terminal = stream
        self.log = open(filename, 'w',encoding='utf-8')
        self.previousMsg = None
        sys.stdout = self

    def write(self, message):
        if self.previousMsg == None or "\n" in self.previousMsg:
            topMsg = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " : "
            self.terminal.write(topMsg) # 显示前端
            self.log.write(topMsg) # 输出日志

        if isinstance(message, str):
            self.previousMsg = message
        if self.previousMsg == None:
            self.previousMsg = ""

        self.terminal.write(message)
        self.log.write(message)
        self.log.flush() # 刷新缓存区,即将缓存区的内容立即写入到文件(否则就会运行完程序在写入)

    def flush(self):
        pass

# 文件名字(如果之前不存在,则会在程序运行后自动创建,如果存在,则打开会实时显示)
fileName = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
sys.stdout = Logger(fileName+".log") # 记录正常的 print 信息
sys.stderr = Logger(fileName+".log") # 记录 traceback 信息

if __name__ == '__main__':
    import time
    for i in range(100):
        print(i)
        time.sleep(1)
        if i == 10:
            # i/0
            break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清纯世纪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值