py.lib.aw_log
2024-10-30
Parent:41b53fd5637e
py.lib.aw_log/src/aw_log/syslog.py
.. 1.202410.1 . Изменение структуры проекта под новые вызовы SDK Python . Убраны версии с отдельный файлов, они кажутся избыточними. * Изменено формирование записей о исключении, для большего соответствия логике журналирования - Перенос `NullLog` на уровень модуля и повышение его универсальности для замены других классов.
| awgur@0 | 1 # coding: utf-8 |
| awgur@0 | 2 |
| awgur@0 | 3 import syslog |
| awgur@0 | 4 from typing import Any |
| awgur@0 | 5 |
| awgur@0 | 6 from . import AbstractLogBase |
| awgur@0 | 7 |
| awgur@0 | 8 PRIORITY_BY_MARK = { |
| awgur@0 | 9 "`": syslog.LOG_DEBUG, # Debug |
| awgur@0 | 10 ".": syslog.LOG_INFO, # Info |
| awgur@0 | 11 "*": syslog.LOG_WARNING, # Warning |
| awgur@0 | 12 "!": syslog.LOG_ERR, # Error |
| awgur@0 | 13 "#": syslog.LOG_ALERT, # Alert |
| awgur@0 | 14 } |
| awgur@0 | 15 |
| awgur@0 | 16 |
| awgur@0 | 17 class SysLog(AbstractLogBase): |
| awgur@0 | 18 @staticmethod |
| awgur@0 | 19 def init_syslog(ident): |
| awgur@0 | 20 syslog.openlog(ident, syslog.LOG_PID) |
| awgur@0 | 21 |
| awgur@0 | 22 def __init__(self, prefix: str = 'main', facility=syslog.LOG_USER): |
| awgur@0 | 23 super().__init__(prefix=prefix) |
| awgur@0 | 24 self.facility = facility |
| awgur@0 | 25 |
| awgur@6 | 26 def sub_log(self, name: str): |
| awgur@6 | 27 return self.__class__(f'{self.prefix}/{name}', self.facility) |
| awgur@6 | 28 |
| awgur@0 | 29 def _write(self, mark: str, msg: Any): |
| awgur@0 | 30 flag = self.facility | PRIORITY_BY_MARK.get(mark, syslog.LOG_INFO) |
| awgur@0 | 31 |
| awgur@0 | 32 for l in self._write_helper(mark=mark, msg=msg): |
| awgur@0 | 33 syslog.syslog(flag, l) |