Python에서 Json 개체 문자열을 syslog 메시지로 보내기

Oct 28 2020

이 도구 를 사용 하여 어플라이언스에 대한 메트릭을 가져옵니다.

스크립트는 소켓을 사용하여 syslog 메시지를 보내고 있으며 기본 syslog 함수를 사용하여 메시지를 보내도록 시도하고 있습니다.

아래 코드를 추가했지만이 작업을 수행 할 수없는 것 같습니다.

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

테스트 스크립트를 사용하더라도 실패합니다. 나는 파이썬이나 프로그래밍에 능숙하지 않지만 몇 가지 참조를 통해 얻을 수 있으며 올바른 방향의 포인터를 높이 평가합니다.

답변

sarvesh.lad Dec 15 2020 at 21:57

에서: https://stackoverflow.com/a/38929289/1033927

원격 syslog 서버를 사용할 수 있습니다. rsyslog 또는 python 패키지 loggerglue는 rfc5424 및 rfc5425에 설명 된대로 syslog 프로토콜을 구현합니다. . 1024 이상의 포트를 사용하면 루트가 아닌 사용자로 실행할 수 있습니다.

파이썬 로깅 모듈 내에는 syslog 원격 로깅도 지원하는 SyslogHandler가 있습니다.

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