码迷,mamicode.com
首页 > 其他好文 > 详细

输出重定向工具

时间:2018-05-27 13:43:11      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:out   err   codec   CQ   rom   util   threading   ecs   \n   

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()

 

输出重定向工具

标签:out   err   codec   CQ   rom   util   threading   ecs   \n   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!