Конфигурация CentOS 7 Rsyslog не регистрирует сообщения системного журнала отладки Python - PullRequest
0 голосов
/ 15 октября 2018

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

from logging import (DEBUG, INFO, WARNING, Filter, Formatter, basicConfig,
                 getLogger)

from platform import system
from sys import stdout
from colorlog import ColoredFormatter, StreamHandler
# we need to use a package for this due to the Python SysLogHandler not being
# RFC compliant. This avoids difficult to understand formatters as discussed
# on https://docs.python.org/3/howto/logging-cookbook.html#inserting-a-bom-into-messages-sent-to-a-sysloghandler
from rfc5424logging import Rfc5424SysLogHandler


def init_logger(name):
    # Create the logger we'll be using
    logger = getLogger(name)

    # Setup how we want to format our messages
    stdout_formatter = ColoredFormatter(
        '%(log_color)s%(asctime)s [%(levelname)s] %(message)s', '%Y-%b-%d %H:%M %Z')
    syslog_formatter = Formatter(
        '%(asctime)s emailer:%(name)s:%(funcName)-12s [%(levelname)s]-8s msg="%(message)s"')

    # Setup the syslog handler we'll be using
    current_system = system()
    address = '/dev/log'
    if current_system == 'Darwin':
        address = '/var/run/syslog'

    # Setup logging to syslog for DEBUG and below
    syslogHdlr = Rfc5424SysLogHandler(address=address, utc_timestamp=True)
    syslogHdlr.setLevel(DEBUG)
    syslogHdlr.setFormatter(syslog_formatter)
    logger.addHandler(syslogHdlr)

    # Setup logging to stdout for INFO and below
    stdoutHdlr = StreamHandler(stream=stdout)
    stdoutHdlr.setLevel(INFO)
    stdoutHdlr.setFormatter(stdout_formatter)
    logger.addHandler(stdoutHdlr)

    # Set the logging level for the core logger
    logger.setLevel(DEBUG)

    return logger

При использовании кода выше, это записывает сообщения INFO и выше в системный журнал.Даже если я изменю все три команды setLevel на DEBUG, rsyslog не будет регистрировать сообщения DEBUG, что приведет к потере их информации.Любые предложения о том, как гарантировать, что журналы уровня DBEUG не будут удалены в rsyslog?

Это использует Python 3.6, CentOS 7 и rsyslog 8.24.0

...