CentOS 7 Rsyslog配置未记录Python调试Syslog消息

时间:2018-10-15 14:58:06

标签: python python-3.x centos7 syslog rsyslog

我正在尝试让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消息及以上消息记录到syslog中。即使我将所有三个setLevel命令都更改为DEBUG,rsyslog也不记录DEBUG消息,从而导致其信息丢失。关于如何确保在rsyslog中不删除DBEUG级别日志的任何建议?

这是使用Python 3.6,CentOS 7和rsyslog 8.24.0

0 个答案:

没有答案
相关问题