Merge "Fixed infinite recursion when using serial ports"

This commit is contained in:
Jenkins 2017-05-29 12:27:38 +00:00 committed by Gerrit Code Review
commit 68a9ae57d4

View File

@ -52,14 +52,13 @@ class SerialPortHandler(logging.StreamHandler):
def __init__(self): def __init__(self):
super(SerialPortHandler, self).__init__(None) super(SerialPortHandler, self).__init__(None)
self.stream = None self.stream = self._open()
@staticmethod @staticmethod
def _open(): def _open():
serial_port = None serial_port = None
if CONF.logging_serial_port_settings: if CONF.logging_serial_port_settings:
settings = CONF.logging_serial_port_settings.split(',') settings = CONF.logging_serial_port_settings.split(',')
try:
serial_port = serial.Serial(port=settings[0], serial_port = serial.Serial(port=settings[0],
baudrate=int(settings[1]), baudrate=int(settings[1]),
parity=settings[2], parity=settings[2],
@ -67,8 +66,6 @@ class SerialPortHandler(logging.StreamHandler):
if not serial_port.isOpen(): if not serial_port.isOpen():
serial_port.open() serial_port.open()
serial_port.write = _safe_write(serial_port.write) serial_port.write = _safe_write(serial_port.write)
except serial.SerialException as exc:
LOG.debug(exc)
return serial_port return serial_port
def emit(self, record): def emit(self, record):
@ -95,12 +92,15 @@ def setup(product_name):
log.setup(CONF, product_name) log.setup(CONF, product_name)
if CONF.logging_serial_port_settings: if CONF.logging_serial_port_settings:
log_root = log.getLogger(product_name).logger try:
serialportlog = SerialPortHandler() serialportlog = SerialPortHandler()
log_root = log.getLogger(product_name).logger
log_root.addHandler(serialportlog) log_root.addHandler(serialportlog)
datefmt = CONF.log_date_format datefmt = CONF.log_date_format
serialportlog.setFormatter( serialportlog.setFormatter(
formatters.ContextFormatter(project=product_name, formatters.ContextFormatter(project=product_name,
datefmt=datefmt)) datefmt=datefmt))
except serial.SerialException:
LOG.warn("Serial port: {0} could not be opened".format(
CONF.logging_serial_port_settings))