1
0
mirror of https://github.com/CumulusNetworks/ifupdown2.git synced 2024-05-06 15:54:50 +00:00

addons: dhcp: enable syslog at boot & fix syslog log-level

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
This commit is contained in:
Julien Fortin
2020-06-04 03:57:14 +02:00
parent 5cf3c6a196
commit f00d0dcd8c
2 changed files with 41 additions and 8 deletions

View File

@@ -324,17 +324,36 @@ class dhcp(Addon, moduleBase):
if not self.is_dhcp_allowed_on(ifaceobj, syntax_check=False):
return
disable_syslog_on_exit = False
log_manager = LogManager.get_instance()
syslog_log_level = logging.INFO
disable_syslog_on_exit = True
try:
if not ifupdownflags.flags.PERFMODE:
disable_syslog_on_exit = not LogManager.get_instance().is_syslog_enabled_syslog()
LogManager.get_instance().enable_syslog()
self.logger.info("%s: enabling syslog for dhcp configuration" % ifaceobj.name)
# if syslog is already enabled we shouldn't disable it
if log_manager.is_syslog_enabled():
# save current syslog level
syslog_log_level = log_manager.get_syslog_log_level()
# prevent syslog from being disabled on exit
disable_syslog_on_exit = False
else:
# enabling syslog
log_manager.enable_syslog()
# syslog will be disabled once we are done
disable_syslog_on_exit = True
# update the current syslog handler log level if higher than INFO
if syslog_log_level >= logging.INFO:
log_manager.set_level_syslog(logging.INFO)
self.logger.info("%s: enabling syslog for dhcp configuration" % ifaceobj.name)
if operation == 'query-checkcurr':
op_handler(self, ifaceobj, query_ifaceobj)
else:
op_handler(self, ifaceobj)
finally:
# disable syslog handler or re-set the proper log-level
if disable_syslog_on_exit:
LogManager.get_instance().disable_syslog()
log_manager.get_instance().disable_syslog()
else:
log_manager.set_level_syslog(syslog_log_level)

View File

@@ -121,7 +121,11 @@ class LogManager:
for handler in self.__root_logger.handlers:
handler.setLevel(log_level)
self.__root_logger.setLevel(log_level)
# make sure that the root logger has the lowest logging level possible
# otherwise some messages might not go through
if self.__root_logger.level > log_level:
self.__root_logger.setLevel(log_level)
def enable_console(self):
""" Add console handler to root logger """
@@ -141,9 +145,19 @@ class LogManager:
if self.__syslog_handler:
self.__root_logger.removeHandler(self.__syslog_handler)
def is_syslog_enabled_syslog(self):
def is_syslog_enabled(self):
return self.__syslog_handler in self.__root_logger.handlers
def get_syslog_log_level(self):
return self.__syslog_handler.level if self.__syslog_handler else None
def set_level_syslog(self, level):
if self.__syslog_handler:
self.__syslog_handler.setLevel(level)
if self.__root_logger.level > level:
self.__root_logger.setLevel(level)
def close_log_stream(self):
""" Close socket to disconnect client.
We first have to perform this little hack: it seems like the socket is