Mengirim string Objek Json sebagai pesan syslog dengan Python

Oct 28 2020

Saya menggunakan alat ini untuk mendapatkan metrik pada alat tersebut.

Skrip ini menggunakan soket untuk mengirim pesan syslog, dan saya mencoba membuatnya mengirim pesan menggunakan fungsi syslog asli.

Saya menambahkan kode di bawah ini tetapi saya tidak bisa membuatnya berfungsi.

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

Bahkan menggunakan skrip uji gagal. Saya tidak mahir dalam python atau pemrograman tetapi saya bisa bertahan dengan beberapa referensi, petunjuk apa pun ke arah yang benar dihargai.

Jawaban

sarvesh.lad Dec 15 2020 at 21:57

Dari: https://stackoverflow.com/a/38929289/1033927

Anda dapat menggunakan server syslog jarak jauh: rsyslog atau paket python loggerglue mengimplementasikan protokol syslog seperti yang dijelaskan di rfc5424 dan rfc5425. . Jika Anda menggunakan port di atas 1024, Anda dapat menjalankannya sebagai pengguna non-root.

Di dalam modul logging python Anda memiliki SyslogHandler yang juga mendukung logging jarak jauh 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')