Initial commit
This commit is contained in:
51
circularlog.py
Normal file
51
circularlog.py
Normal file
@ -0,0 +1,51 @@
|
||||
import collections
|
||||
import time
|
||||
import logging
|
||||
|
||||
circular = collections.deque(maxlen=80)
|
||||
lastrider = None
|
||||
|
||||
def strtm(t=None):
|
||||
if t is None:
|
||||
t = time.time()
|
||||
tm = time.localtime(t)
|
||||
return time.strftime("%H:%M:%S",tm)[0:7] + ("%5.3f" % (t % 10))
|
||||
|
||||
class Rider(object):
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
self.lastprompt = None
|
||||
self.cnt = 0
|
||||
self.lastline = None
|
||||
self.lasttime = 0
|
||||
|
||||
def putlast(self):
|
||||
global lastrider, circular
|
||||
if self.lasttime != 0:
|
||||
circular.append("...")
|
||||
circular.append("%s %s %s %s" % (strtm(self.lasttime), self.name, self.lastprompt, self.lastline))
|
||||
self.cnt = 0
|
||||
self.lasttime = 0
|
||||
|
||||
def put(self, prompt, line):
|
||||
global lastrider, circular
|
||||
now = time.time()
|
||||
if prompt != self.lastprompt or lastrider != self:
|
||||
if lastrider:
|
||||
lastrider.putlast()
|
||||
self.lastprompt = prompt
|
||||
lastrider = self
|
||||
else:
|
||||
if self.cnt >= 4:
|
||||
self.lastline = line
|
||||
self.lasttime = now
|
||||
return
|
||||
self.cnt += 1
|
||||
circular.append("%s %s %s %s" % (strtm(now), self.name, prompt, line))
|
||||
|
||||
def log():
|
||||
if lastrider:
|
||||
lastrider.putlast()
|
||||
for line in circular:
|
||||
logging.info("%s", line)
|
||||
circular.clear()
|
Reference in New Issue
Block a user