[201911][sonic-py-common]: Fix syslog implicit min priority override (#5710)

* [sonic-py-common]: Fix syslog implicit min priority override

Signed-off-by: Nazarii Hnydyn <nazariig@nvidia.com>

* Fix review comments.

Signed-off-by: Nazarii Hnydyn <nazariig@nvidia.com>
This commit is contained in:
Nazarii Hnydyn 2020-10-25 19:42:47 +02:00 committed by GitHub
parent 963bd7fdc4
commit 2a608b9b88
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 15 deletions

View File

@ -8,9 +8,8 @@ from .logger import Logger
# #
# Constants ==================================================================== # Constants ====================================================================
# #
# Redis DB information
REDIS_TIMEOUT_MSECS = 0
REDIS_TIMEOUT_MSECS = 0
EEPROM_MODULE_NAME = 'eeprom' EEPROM_MODULE_NAME = 'eeprom'
EEPROM_CLASS_NAME = 'board' EEPROM_CLASS_NAME = 'board'
@ -32,7 +31,11 @@ def db_connect(db_name, namespace=EMPTY_NAMESPACE):
class DaemonBase(Logger): class DaemonBase(Logger):
def __init__(self, log_identifier): def __init__(self, log_identifier):
super(DaemonBase, self).__init__(log_identifier, Logger.LOG_FACILITY_DAEMON) super(DaemonBase, self).__init__(
log_identifier=log_identifier,
log_facility=Logger.LOG_FACILITY_DAEMON,
log_option=(Logger.LOG_OPTION_NDELAY | Logger.LOG_OPTION_PID)
)
# Register our default signal handlers, unless the signal already has a # Register our default signal handlers, unless the signal already has a
# handler registered, most likely from a subclass implementation # handler registered, most likely from a subclass implementation

View File

@ -11,8 +11,11 @@ class Logger(object):
""" """
Logger class for SONiC Python applications Logger class for SONiC Python applications
""" """
LOG_FACILITY_USER = syslog.LOG_USER
LOG_FACILITY_DAEMON = syslog.LOG_DAEMON LOG_FACILITY_DAEMON = syslog.LOG_DAEMON
LOG_FACILITY_USER = syslog.LOG_USER
LOG_OPTION_NDELAY = syslog.LOG_NDELAY
LOG_OPTION_PID = syslog.LOG_PID
LOG_PRIORITY_ERROR = syslog.LOG_ERR LOG_PRIORITY_ERROR = syslog.LOG_ERR
LOG_PRIORITY_WARNING = syslog.LOG_WARNING LOG_PRIORITY_WARNING = syslog.LOG_WARNING
@ -20,21 +23,23 @@ class Logger(object):
LOG_PRIORITY_INFO = syslog.LOG_INFO LOG_PRIORITY_INFO = syslog.LOG_INFO
LOG_PRIORITY_DEBUG = syslog.LOG_DEBUG LOG_PRIORITY_DEBUG = syslog.LOG_DEBUG
def __init__(self, log_identifier=None, log_facility=LOG_FACILITY_USER): DEFAULT_LOG_FACILITY = LOG_FACILITY_USER
self.syslog = syslog DEFAULT_LOG_OPTION = LOG_OPTION_NDELAY
if not log_identifier: def __init__(self, log_identifier=None, log_facility=DEFAULT_LOG_FACILITY, log_option=DEFAULT_LOG_OPTION):
self._syslog = syslog
if log_identifier is None:
log_identifier = os.path.basename(sys.argv[0]) log_identifier = os.path.basename(sys.argv[0])
self.syslog.openlog(ident=log_identifier, # Initialize syslog
logoption=(syslog.LOG_PID | syslog.LOG_NDELAY), self._syslog.openlog(ident=log_identifier, logoption=log_option, facility=log_facility)
facility=log_facility)
# Set the default minimum log priority to LOG_PRIORITY_NOTICE # Set the default minimum log priority to LOG_PRIORITY_NOTICE
self.set_min_log_priority(self.LOG_PRIORITY_NOTICE) self.set_min_log_priority(self.LOG_PRIORITY_NOTICE)
def __del__(self): def __del__(self):
self.syslog.closelog() self._syslog.closelog()
# #
# Methods for setting minimum log priority # Methods for setting minimum log priority
@ -48,7 +53,7 @@ class Logger(object):
Args: Args:
priority: The minimum priority at which to log messages priority: The minimum priority at which to log messages
""" """
self.syslog.setlogmask(self.syslog.LOG_UPTO(priority)) self._min_log_priority = priority
def set_min_log_priority_error(self): def set_min_log_priority_error(self):
""" """
@ -85,8 +90,11 @@ class Logger(object):
# #
def log(self, priority, msg, also_print_to_console=False): def log(self, priority, msg, also_print_to_console=False):
self.syslog.syslog(priority, msg) if self._min_log_priority >= priority:
# Send message to syslog
self._syslog.syslog(priority, msg)
# Send message to console
if also_print_to_console: if also_print_to_console:
print(msg) print(msg)