Module logger |
[hide private]
[frames] | no frames]

## Source Code for Module logger

     1
     2  from configParser import C3Object
     3  from PyZ3950.CQLParser import PrefixableObject
     4  import os, time, sys
     5  from baseObjects import Session, Logger
     6
     7 -class SimpleLogger(Logger):
     8
     9      fileh = None
    10      lineCache = []
    11      cacheLen = 0
    12
    13 -    def __init__(self, session, config, parent):
    14          Logger.__init__(self, session, config, parent)
    15          fp = self.get_path(None, 'filePath')
    16          if (fp == "stdout"):
    17              self.fileh = sys.stdout
    18          elif (fp == "stderr"):
    19              self.fileh = sys.stderr
    20          else:
    21              if (not os.path.isabs(fp)):
    22                  dfp = self.get_path(None, 'defaultPath')
    23                  fp = os.path.join(dfp, fp)
    24              self.fileh = file(fp, 'a')
    25          clen = self.get_setting(None, 'cacheLength')
    26          if clen:
    27              self.cacheLen = int(clen)
    28          else:
    29              self.cacheLen = 0
    30
    31 -    def log(self, session, txt):
    32          now = time.strftime("%Y-%m-%d %H:%M:%S")
    33          line = "[%s]: %s" % (now, txt)
    34          self._logLine(line)
    35
    36 -    def _logLine(self, line):
    37          if (self.lineCache and self.lineCache[-1].startswith(line)):
    38              self.lineCache[-1] += "."
    39          else:
    40              self.lineCache.append(line)
    41          if (len(self.lineCache) > self.cacheLen):
    42              for l in self.lineCache:
    43                  self.fileh.write(l + "\n")
    44              self.fileh.flush()
    45              self.lineCache = []
    46
    47
    48 -class FunctionLogger(SimpleLogger):
    49
    50 -    def __init__(self, session, config, parent):
    51          self.cacheLen = 1000
    52          SimpleLogger.__init__(self, session, config, parent)
    53
    54 -    def _myRepr(self, a):
    55          if (isinstance(a, C3Object)):
    56              return a.id
    57          elif (isinstance(a, Session)):
    58              return "Session(%s)" % (a.user)
    59          elif (isinstance(a, PrefixableObject)):
    60              return repr(a.toCQL())
    61          else:
    62              return repr(a)
    63
    64 -    def log(self, object, fn, *args, **kw):
    65
    66          frame = sys._getframe(2)
    67          caller = frame.f_code.co_name
    68          now = time.strftime("%Y-%m-%d %H:%M:%S")
    69          line = ["[%s]: from %s() : %s.%s(" % (now, caller, object.id, fn)]
    70          ln = []
    71          for a in args:
    72              ln.append(self._myRepr(a))
    73          for k in kw:
    74              ln.append("%s=%s" % (k, self._myRepr(kw[k])))
    75          atxt = ','.join(ln)
    76          line.append(atxt)
    77          line.append(")")
    78          line = ''.join(line)
    79
    80          self._logLine(line)
    81