py.lib.aw_log
2024-02-11
Child:9155a66edb31
py.lib.aw_log/src/aw_log/syslog.py
..init
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/aw_log/syslog.py Sun Feb 11 13:53:23 2024 +0300 1.3 @@ -0,0 +1,31 @@ 1.4 +# coding: utf-8 1.5 +# devel.a0fs.ru -- aw_log.syslog -- v0.r202402.1 1.6 + 1.7 +import syslog 1.8 +from typing import Any 1.9 + 1.10 +from . import AbstractLogBase 1.11 + 1.12 +PRIORITY_BY_MARK = { 1.13 + "`": syslog.LOG_DEBUG, # Debug 1.14 + ".": syslog.LOG_INFO, # Info 1.15 + "*": syslog.LOG_WARNING, # Warning 1.16 + "!": syslog.LOG_ERR, # Error 1.17 + "#": syslog.LOG_ALERT, # Alert 1.18 +} 1.19 + 1.20 + 1.21 +class SysLog(AbstractLogBase): 1.22 + @staticmethod 1.23 + def init_syslog(ident): 1.24 + syslog.openlog(ident, syslog.LOG_PID) 1.25 + 1.26 + def __init__(self, prefix: str = 'main', facility=syslog.LOG_USER): 1.27 + super().__init__(prefix=prefix) 1.28 + self.facility = facility 1.29 + 1.30 + def _write(self, mark: str, msg: Any): 1.31 + flag = self.facility | PRIORITY_BY_MARK.get(mark, syslog.LOG_INFO) 1.32 + 1.33 + for l in self._write_helper(mark=mark, msg=msg): 1.34 + syslog.syslog(flag, l)