py.lib
py.lib/log/slog_syslogger.py
. Переписываем slog_syslogger.py согласно текущему состоянию языка
1.1 --- a/log/slog_syslogger.py Sat Oct 23 21:28:27 2021 +0300 1.2 +++ b/log/slog_syslogger.py Sat Nov 27 12:29:59 2021 +0300 1.3 @@ -16,6 +16,7 @@ 1.4 from time import time 1.5 from traceback import extract_tb, extract_stack 1.6 from datetime import timedelta 1.7 +from typing import Any 1.8 1.9 LOG_FACILITY = { 1.10 'auth': syslog.LOG_AUTH, 1.11 @@ -40,6 +41,7 @@ 1.12 'local7': syslog.LOG_LOCAL7 1.13 } 1.14 1.15 + 1.16 class LoggerError(Exception): pass 1.17 1.18 1.19 @@ -47,10 +49,14 @@ 1.20 FACILITY = LOG_FACILITY['user'] 1.21 1.22 1.23 -def log_prep(ident, facility='user'): 1.24 +def check_facility(facility: str = 'user'): 1.25 + if not facility.lower() in LOG_FACILITY: 1.26 + raise LoggerError(f'Unknown facility: {facility}') 1.27 + 1.28 + 1.29 +def log_prep(ident: str, facility: str = 'user'): 1.30 global FACILITY 1.31 - if not facility.lower() in LOG_FACILITY: 1.32 - raise LoggerError('Unknown facility') 1.33 + check_facility(facility) 1.34 1.35 syslog.openlog(ident, syslog.LOG_PID) 1.36 1.37 @@ -58,15 +64,15 @@ 1.38 1.39 1.40 class Timing(object): 1.41 - def __init__(self, name=None): 1.42 + def __init__(self, name: str = None): 1.43 if name is None: 1.44 self.prefix = '' 1.45 else: 1.46 - self.prefix = '%s :: ' % name 1.47 + self.prefix = f'{name} :: ' 1.48 self.tsAll = time() 1.49 self.ts = self.tsAll 1.50 1.51 - def getTime(self): 1.52 + def get_time(self): 1.53 return time() - self.ts 1.54 1.55 def reset(self): 1.56 @@ -77,8 +83,8 @@ 1.57 ts = time() 1.58 return self.prefix + '%s(%.4f)' % (timedelta(seconds=(ts - self.tsAll)), ts - self.ts) 1.59 1.60 - def __call__(self, msg): 1.61 - _buf = '%s | %s' % (self, msg) 1.62 + def __call__(self, msg: Any) -> str: 1.63 + _buf = f'{self} | {msg}' 1.64 self.ts = time() 1.65 return _buf 1.66 1.67 @@ -87,59 +93,59 @@ 1.68 init_log = log_prep 1.69 1.70 @staticmethod 1.71 - def get_timing(name=None): 1.72 + def get_timing(name: str = None): 1.73 return Timing(name) 1.74 1.75 - def __init__(self, prefix, facility=FACILITY): 1.76 + def __init__(self, prefix: str = 'main', facility: int = FACILITY): 1.77 self.prefix = str(prefix) 1.78 self.facility = facility 1.79 1.80 - def _write(self, flag, mark, msg): 1.81 + def _write(self, flag: int, mark: str, msg: Any): 1.82 for l in str(msg).splitlines(): 1.83 - syslog.syslog(self.facility | flag, '%s: %s %s' % (self.prefix, mark, l)) 1.84 + syslog.syslog(self.facility | flag, f'{mark} {self.prefix}: {l}') 1.85 1.86 - def __call__(self, msg): 1.87 + def __call__(self, msg: Any): 1.88 self._write(syslog.LOG_INFO, '.', msg) 1.89 1.90 - def err(self, msg): 1.91 + def err(self, msg: Any): 1.92 self._write(syslog.LOG_ERR, '!', msg) 1.93 1.94 - def warn(self, msg): 1.95 + def warn(self, msg: Any): 1.96 self._write(syslog.LOG_WARNING, '*', msg) 1.97 1.98 - def debug(self, msg): 1.99 + def debug(self, msg: Any): 1.100 self._write(syslog.LOG_DEBUG, '`', msg) 1.101 1.102 - def alert(self, msg): 1.103 + def alert(self, msg: Any): 1.104 self._write(syslog.LOG_ALERT, '#', msg) 1.105 1.106 - def sublog(self, prefix): 1.107 - return self.__class__('%s/%s' % (self.prefix, prefix), self.facility) 1.108 + def sublog(self, prefix: str): 1.109 + return self.__class__(f'{self.prefix}/{prefix}', self.facility) 1.110 1.111 - def excpt(self, msg, eClass=None, eObj=None, eTb=None, stack_skip=0): 1.112 - if eClass is None: 1.113 - eClass, eObj, eTb = exc_info() 1.114 + def excpt(self, msg: Any, e_class: type = None, e_obj: Exception = None, e_tb=None, stack_skip=0): 1.115 + if e_class is None: 1.116 + e_class, e_obj, e_tb = exc_info() 1.117 1.118 - if eClass is None: 1.119 + if e_class is None: 1.120 # Если вдруг вызываем без произошедшего исключения 1.121 self.err(msg) 1.122 else: 1.123 - tbData_tb = list(extract_tb(eTb))[::-1] 1.124 - tbData_stack = list(extract_stack())[::-1][(2 + stack_skip):] 1.125 + tb_data_tb = list(extract_tb(e_tb))[::-1] 1.126 + tb_data_stack = list(extract_stack())[::-1][(2 + stack_skip):] 1.127 1.128 self.err(msg) 1.129 1.130 self.err('--- EXCEPTION ---') 1.131 - self.err(' %s (%s)' % (eClass.__name__, eObj)) 1.132 + self.err(' %s (%s)' % (e_class.__name__, e_obj)) 1.133 1.134 self.err('--- TRACEBACK ---') 1.135 - for _tbFile, _tbLine, _tbFunc, _tbText in tbData_tb: 1.136 - self.err('File: %s, line %s in %s' % (_tbFile, _tbLine, _tbFunc)) 1.137 - self.err(' %s' % _tbText) 1.138 + for _tb_file, _tb_line, _tb_func, _tb_text in tb_data_tb: 1.139 + self.err('File: %s, line %s in %s' % (_tb_file, _tb_line, _tb_func)) 1.140 + self.err(' %s' % _tb_text) 1.141 1.142 self.err('>>> Exception Handler <<<') 1.143 - for _tbFile, _tbLine, _tbFunc, _tbText in tbData_stack: 1.144 - self.err('File: %s, line %s in %s' % (_tbFile, _tbLine, _tbFunc)) 1.145 - self.err(' %s' % _tbText) 1.146 + for _tb_file, _tb_line, _tb_func, _tb_text in tb_data_stack: 1.147 + self.err('File: %s, line %s in %s' % (_tb_file, _tb_line, _tb_func)) 1.148 + self.err(' %s' % _tb_text) 1.149 1.150 self.err('--- END EXCEPTION ---')