python print日志保存到日志文件

python项目,print方法的日志收集 

import sys
import time
import threading
import datetime
import os

class Logger(object):
    def __init__(self, logf):
        self.logf = logf
        self.terminal = sys.stdout
        sys.stdout = self
        self.log = open(self.logf, 'a+')
        self.previousMsg = None

    def write(self, message):
        if self.previousMsg == None or "\n" in self.previousMsg:
            topMsg = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") + " : "
            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)

    def flush(self):
        self.log.flush()
            
    
def threading_log(log, wait=5):
    while 1== 1:
        time.sleep(wait)
        log.flush()

def start_log(logf="logs/temp.log"):
    if not os.path.exists(os.path.dirname(logf)):
        os.makedirs(os.path.dirname(logf))
    
    logger = Logger(logf)
     
    log_thread = threading.Thread(target=threading_log ,args=(logger,))
    log_thread.start()

使用

start_log()
for i in range(3000):
    s = "test"
    print(s, i) 
    time.sleep(20)

效果

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值