首页 > 其他 > 详细

输出重定向工具

时间:2018-05-27 12:45:18      阅读:200      评论:0      收藏:0      [点我收藏+]

main主体

import time
import sys
from test.utils import TraceLog


class Server(object):
def printLog(self):
print("start server")
for i in range(10):
print(i)
time.sleep(0.1)
print("end server\n")


if __name__ == ‘__main__‘:
traceLog = TraceLog("main.log")
traceLog.start()
sys.stdout = traceLog
sys.stderr = traceLog
server = Server()
server.printLog()


# 每当调用print的时候,底层就是在代用sys.stdout.write(str)
# sys.stdout.write() = traceLog.write()

utils工具

‘‘‘
不断记录服务端输入的日志
实现 >> 和 > 功能
‘‘‘


import codecs
from threading import Thread, Lock
import os

class TraceLog(Thread):
def __init__(self, logName):
# super().__init__() #python3的调用父类的方法,python2用的是super(Class, self).xxx,也是等价于Thread.__init__(self)
Thread.__init__(self)
self.logName = logName
self.lock = Lock()
self.contexts = []

def isFile(self):
if not os.path.exists(self.logName):
with codecs.open(self.logName, ‘w‘) as f:
f.write("this log name is: {0}\n".format(self.logName))
f.write("start log\n")

def write(self, context):
self.contexts.append(context)

def run(self):
while 1:
# self.lock.acquire()
if len(self.contexts) != 0:
with codecs.open(self.logName, "a") as f:
for context in self.contexts:
f.write(context)
del self.contexts[:] # 注意不能忘记清空
# self.lock.release()

 

输出重定向工具

原文:https://www.cnblogs.com/Jweiqing/p/9095595.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!