py.lib.aw_log

Yohn Y. 2024-10-30 Parent:41b53fd5637e

6:9155a66edb31 Go to Latest

py.lib.aw_log/src/aw_log/console.py

.. 1.202410.1 . Изменение структуры проекта под новые вызовы SDK Python . Убраны версии с отдельный файлов, они кажутся избыточними. * Изменено формирование записей о исключении, для большего соответствия логике журналирования - Перенос `NullLog` на уровень модуля и повышение его универсальности для замены других классов.

History
awgur@0 1 # coding: utf-8
awgur@0 2
awgur@0 3 from typing import Any
awgur@0 4 from time import ctime
awgur@0 5 from sys import stderr, stdout
awgur@0 6 from typing import TextIO, Optional
awgur@0 7
awgur@0 8 from . import AbstractLogBase
awgur@0 9
awgur@0 10
awgur@0 11 class AbstractConsoleLog(AbstractLogBase):
awgur@0 12 def __init__(self, prefix: str = 'main'):
awgur@0 13 super().__init__(prefix)
awgur@0 14 self.fd: Optional[TextIO] = None
awgur@0 15
awgur@0 16 def _write(self, mark: str, msg: Any):
awgur@0 17 if self.fd is None:
awgur@0 18 raise ValueError(f'Не определён канал логирования')
awgur@0 19
awgur@0 20 tm = ctime()
awgur@0 21 for l in super()._write_helper(mark, msg):
awgur@0 22 self.fd.write(f'{tm} | {l}')
awgur@0 23
awgur@0 24
awgur@0 25 class StdoutLog(AbstractConsoleLog):
awgur@0 26 def __init__(self, prefix: str = 'main'):
awgur@0 27 super().__init__(prefix)
awgur@0 28 self.fd = stdout
awgur@0 29
awgur@0 30
awgur@0 31 class StderrLog(AbstractConsoleLog):
awgur@0 32 def __init__(self, prefix: str = 'main'):
awgur@0 33 super().__init__(prefix)
awgur@0 34 self.fd = stderr