py.lib.aw_log

Yohn Y. 2026-06-23 Parent:5db1541311ef Child:e673daec06dc

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