Отправка строки объекта Json в виде сообщения системного журнала в Python

Я использую этот инструмент для получения показателей на приборе.

Сценарий использует сокеты для отправки сообщения системного журнала, и я пытаюсь заставить его отправлять сообщение с использованием собственных функций системного журнала.

Я добавил приведенный ниже код, но я не могу заставить его работать.

def sendSyslog2(jsonObj):
if (logHostAvailable["syslog"]==True):
    logging.info("SYSLOG REQUEST: "+json.dumps(jsonObj))
    try:
        syslog.openlog(facility=syslog.LOG_LOCAL5)
        syslog.syslog(syslog.LOG_INFO, json.dumps(jsonObj))
    except:
        logging.error("syslog failed")

Даже использование тестовых сценариев не помогает. Я не очень хорошо разбираюсь в python или программировании, но я могу обойтись некоторой ссылкой, любые указатели в правильном направлении приветствуются.


person sarvesh.lad    schedule 27.10.2020    source источник
comment
В итоге я использовал logging.handlers, как рекомендовано здесь: /38907637/   -  person sarvesh.lad    schedule 11.11.2020


Ответы (1)


Из: https://stackoverflow.com/a/38929289/1033927

Вы можете использовать удаленный сервер системного журнала: rsyslog или пакет python loggerglue реализует протокол системного журнала, как описано в rfc5424 и rfc5425. . Когда вы используете порт выше 1024, вы можете запустить его как пользователь без полномочий root.

В модуле ведения журнала python у вас есть SyslogHandler, который также поддерживает удаленное ведение журнала syslog.

import logging
import logging.handlers

my_logger = logging.getLogger('MyLogger')
my_logger.setLevel(logging.DEBUG)

handler = logging.handlers.SysLogHandler(address = ('127.0.0.1',514))

my_logger.addHandler(handler)

my_logger.debug('this is debug')
my_logger.critical('this is critical')
person sarvesh.lad    schedule 15.12.2020