py.lib.aw_log

Yohn Y. 2024-02-11 Child:9155a66edb31

0:41b53fd5637e Go to Latest

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

..init

History
     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)