py.lib.aw_log
8:7caffeee7dca Browse Files
.. 1.202606.2 . Проблема в разборе расширенного сообщения при некоторых параметрах
setup.py src/aw_log/__init__.py
1.1 --- a/setup.py Thu Oct 31 00:24:34 2024 +0300 1.2 +++ b/setup.py Tue Jun 23 15:32:27 2026 +0300 1.3 @@ -3,7 +3,7 @@ 1.4 1.5 setup( 1.6 name='aw_log', 1.7 - version='1.202410.2', 1.8 + version='1.202606.2', 1.9 packages=['aw_log'], 1.10 package_dir={'aw_log': 'src/aw_log'}, 1.11 description='Реализация журналирования'
2.1 --- a/src/aw_log/__init__.py Thu Oct 31 00:24:34 2024 +0300 2.2 +++ b/src/aw_log/__init__.py Tue Jun 23 15:32:27 2026 +0300 2.3 @@ -17,7 +17,10 @@ 2.4 from sys import exc_info 2.5 2.6 2.7 -class Timing(object): 2.8 +class Timing: 2.9 + """\ 2.10 + Организация работы с таймерами 2.11 + """ 2.12 def __init__(self, name: Optional[str] = None): 2.13 if name is None: 2.14 self.prefix = '' 2.15 @@ -25,19 +28,19 @@ 2.16 else: 2.17 self.prefix = f'{name} :: ' 2.18 2.19 - self.tsAll = monotonic() 2.20 - self.ts = self.tsAll 2.21 + self.ts_all = monotonic() 2.22 + self.ts = self.ts_all 2.23 2.24 def get_time(self): 2.25 return monotonic() - self.ts 2.26 2.27 def reset(self): 2.28 self.ts = monotonic() 2.29 - self.tsAll = self.ts 2.30 + self.ts_all = self.ts 2.31 2.32 def __str__(self): 2.33 ts = monotonic() 2.34 - return self.prefix + '%s(%.4f)' % (timedelta(seconds=(ts - self.tsAll)), ts - self.ts) 2.35 + return self.prefix + '%s(%.4f)' % (timedelta(seconds=(ts - self.ts_all)), ts - self.ts) 2.36 2.37 def __call__(self, msg): 2.38 _buf = f'{self} | {msg}' 2.39 @@ -45,7 +48,7 @@ 2.40 return _buf 2.41 2.42 2.43 -class AbstractLogBase(object): 2.44 +class AbstractLogBase: 2.45 def __init__(self, prefix: str = 'main'): 2.46 self.prefix = prefix 2.47 2.48 @@ -75,6 +78,31 @@ 2.49 def get_timing(name: Optional[str] = None): 2.50 return Timing(name) 2.51 2.52 + @staticmethod 2.53 + def format_msg(msg: str, **kwa) -> str: 2.54 + """\ 2.55 + Создаём сообщение, более дружелюбное к средствам разбора логов. 2.56 + Ориентир на ``victoria_logs`` и её ``unpack_logfmt`` 2.57 + 2.58 + :param msg: Основное сообщение 2.59 + :param kwa: Набор ключ-значение, для добавления в сообщения в качестве 2.60 + разбираемых системой элементов, пригодных для фильтрации 2.61 + :returns: Строку, которую необходимо отправить в лог методом с нужным уровнем важности. 2.62 + """ 2.63 + data = '' 2.64 + for k, v in kwa.items(): 2.65 + _v = str(v) 2.66 + if v.find(' ') != -1: 2.67 + v = f'"{v}"' 2.68 + 2.69 + data += f' {k}={v}' 2.70 + 2.71 + if not data: 2.72 + return msg 2.73 + 2.74 + else: 2.75 + return f'{msg} |{data}' 2.76 + 2.77 def sub_log(self, name: str): 2.78 return self.__class__(f'{self.prefix}/{name}') 2.79