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,23 +52,20 @@ 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], bytesize=int(settings[3]))
bytesize=int(settings[3])) 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()
log_root = log.getLogger(product_name).logger
log_root.addHandler(serialportlog)
serialportlog = SerialPortHandler() datefmt = CONF.log_date_format
log_root.addHandler(serialportlog) serialportlog.setFormatter(
formatters.ContextFormatter(project=product_name,
datefmt = CONF.log_date_format datefmt=datefmt))
serialportlog.setFormatter( except serial.SerialException:
formatters.ContextFormatter(project=product_name, LOG.warn("Serial port: {0} could not be opened".format(
datefmt=datefmt)) CONF.logging_serial_port_settings))