logger = None
-def init(viewmanager, x, y, dx, dy):
+def init(viewmanager, x, y, dx, dy, logfile=None):
global logger
- logger = Logger(viewmanager.win(), x, y, dx, dy)
+ logger = Logger(viewmanager.win(), x, y, dx, dy, logfile)
class Logger(object):
- def __init__(self, win, x, y, dx, dy):
+ def __init__(self, win, x, y, dx, dy, logfile=None):
self._win = win.derwin(dy,dx,y,x)
self._win.border()
self._win.addstr(0,2,' Log ')
self._textwin.scrollok(1)
self._wrapper = textwrap.TextWrapper(width = dx-4,
subsequent_indent = ' '*4)
+ if logfile:
+ self._logfile = file(logfile,"a")
+ else:
+ self._logfile = None
def log(self, src, msg):
- lines = self._wrapper.wrap(
- '[%s] (%s) %s' % (time.strftime("%H:%M:%S",time.localtime()),src, msg))
+ text = '[%s] (%s) %s' % (time.strftime("%H:%M:%S",time.localtime()),src, msg)
+ if self._logfile:
+ self._logfile.write(text+"\n")
+ lines = self._wrapper.wrap(text)
+ lines = lines[max(0,len(lines)-self._textwin.getmaxyx()[0]):]
self._textwin.scroll(len(lines))
- for i in range(len(lines)):
+ for i in range(min(len(lines),self._textwin.getmaxyx()[0]-2)):
self._textwin.addstr(self._textwin.getmaxyx()[0]-len(lines)+i,0,
lines[i])
self._textwin.nooutrefresh()