py.lib.aw_log

Yohn Y. 2024-02-11 Parent:41b53fd5637e Child:9155a66edb31

3:4ab8c8590cab Go to Latest

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

. Оформление репозитория

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