การส่งสตริงวัตถุ Json เป็นข้อความ syslog ใน Python

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

แม้แต่การใช้สคริปต์ทดสอบก็ล้มเหลว ฉันไม่ชำนาญใน python หรือการเขียนโปรแกรม แต่ฉันสามารถใช้ข้อมูลอ้างอิงได้บ้างคำแนะนำใด ๆ ในทิศทางที่ถูกต้องชื่นชม

คำตอบ

sarvesh.lad Dec 15 2020 at 21:57

จาก: https://stackoverflow.com/a/38929289/1033927

คุณสามารถใช้เซิร์ฟเวอร์ syslog แบบรีโมต: rsyslog หรือ python package loggerglue ใช้โปรโตคอล syslog ตามที่ถอดรหัสใน rfc5424 และ rfc5425 . เมื่อคุณใช้พอร์ตที่สูงกว่า 1024 คุณสามารถเรียกใช้ในฐานะผู้ใช้ที่ไม่ใช่รูท

ภายในโมดูลการบันทึก 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')