py.lib
16:6c38121a0c86
Go to Latest
py.lib/log/slog_syslogger_tiny.py
+ Добавления инструмента миграций
3 Тривиальная реализация сислоггера без блэк-джека и поэтесс
5 Метки в журнале о уровне сообщения:
14 from datetime import timedelta
17 from traceback import extract_tb, extract_stack
18 from sys import exc_info
22 def __init__(self, name=None):
26 self.prefix = '%s :: ' % name
31 return time() - self.ts
39 return self.prefix + '%s(%.4f)' % (timedelta(seconds=(ts - self.tsAll)), ts - self.ts)
41 def __call__(self, msg):
42 _buf = '%s | %s' % (self, msg)
47 class SimpleSysLogger(object):
49 def initSyslog(ident):
50 syslog.openlog(ident, syslog.LOG_PID)
53 def getTiming(name=None):
56 def __init__(self, prefix, facility=syslog.LOG_USER):
57 self.prefix = str(prefix)
58 self.facility = facility
60 def _write(self, flag, mark, msg):
61 for l in str(msg).splitlines():
62 syslog.syslog(self.facility | flag, '%s: %s %s' % (self.prefix, mark, l))
64 def __call__(self, msg):
65 self._write(syslog.LOG_INFO, '.', msg)
68 self._write(syslog.LOG_ERR, '!', msg)
71 self._write(syslog.LOG_WARNING, '*', msg)
74 self._write(syslog.LOG_DEBUG, '`', msg)
77 self._write(syslog.LOG_ALERT, '#', msg)
79 def sublog(self, prefix):
80 return self.__class__('%s/%s' % (self.prefix, prefix), self.facility)
82 def excpt(self, msg, eClass=None, eObj=None, eTb=None, stack_skip=0):
84 eClass, eObj, eTb = exc_info()
86 tbData_tb = list(extract_tb(eTb))[::-1]
87 tbData_stack = list(extract_stack())[::-1][(2 + stack_skip):]
89 self.err('--- EXCEPTION ---')
90 self.err(' %s (%s)' % (eClass.__name__, eObj))
91 self.err('--- TRACEBACK ---')
92 for _tbFile, _tbLine, _tbFunc, _tbText in tbData_tb:
93 self.err('File: %s, line %s in %s' % (_tbFile, _tbLine, _tbFunc))
94 self.err(' %s' % _tbText)
95 self.err('>>> Exception Handler <<<')
96 for _tbFile, _tbLine, _tbFunc, _tbText in tbData_stack:
97 self.err('File: %s, line %s in %s' % (_tbFile, _tbLine, _tbFunc))
98 self.err(' %s' % _tbText)
99 self.err('--- END EXCEPTION ---')