py.lib.aw_log

Yohn Y. 2024-10-30 Parent:41b53fd5637e Child:9155a66edb31

5:1e93862d5063 Go to Latest

py.lib.aw_log/src/aw_log/syslog.py

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

History
awgur@0 1 # coding: utf-8
awgur@0 2 # devel.a0fs.ru -- aw_log.syslog -- v0.r202402.1
awgur@0 3
awgur@0 4 import syslog
awgur@0 5 from typing import Any
awgur@0 6
awgur@0 7 from . import AbstractLogBase
awgur@0 8
awgur@0 9 PRIORITY_BY_MARK = {
awgur@0 10 "`": syslog.LOG_DEBUG, # Debug
awgur@0 11 ".": syslog.LOG_INFO, # Info
awgur@0 12 "*": syslog.LOG_WARNING, # Warning
awgur@0 13 "!": syslog.LOG_ERR, # Error
awgur@0 14 "#": syslog.LOG_ALERT, # Alert
awgur@0 15 }
awgur@0 16
awgur@0 17
awgur@0 18 class SysLog(AbstractLogBase):
awgur@0 19 @staticmethod
awgur@0 20 def init_syslog(ident):
awgur@0 21 syslog.openlog(ident, syslog.LOG_PID)
awgur@0 22
awgur@0 23 def __init__(self, prefix: str = 'main', facility=syslog.LOG_USER):
awgur@0 24 super().__init__(prefix=prefix)
awgur@0 25 self.facility = facility
awgur@0 26
awgur@0 27 def _write(self, mark: str, msg: Any):
awgur@0 28 flag = self.facility | PRIORITY_BY_MARK.get(mark, syslog.LOG_INFO)
awgur@0 29
awgur@0 30 for l in self._write_helper(mark=mark, msg=msg):
awgur@0 31 syslog.syslog(flag, l)