Skip to content

Commit e5b6299

Browse files
committed
fix(logging): remove library stdout prints
Refs: issue #141 #141
1 parent 29f52ac commit e5b6299

6 files changed

Lines changed: 58 additions & 39 deletions

File tree

‎brping/pingmessage.py‎

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
# PingMessage.py
44
# Python implementation of the Blue Robotics 'Ping' binary message protocol
55

6+
import logging
67
import struct
78
from brping import definitions
9+
10+
logger = logging.getLogger(__name__)
811
payload_dict = definitions.payload_dict_all
912
asciiMsgs = [definitions.COMMON_NACK, definitions.COMMON_ASCII_TEXT]
1013
variable_msgs = [
@@ -133,9 +136,8 @@ def __init__(self, msg_id=0, msg_data=None, payload_dict=None):
133136
self.payload_format = self.get_payload_format()
134137

135138
# TODO handle better here, and catch Constructor 1 also
136-
except KeyError as e:
137-
print("message id not recognized: %d" % self.message_id, msg_data)
138-
raise e
139+
except KeyError:
140+
raise
139141

140142
## Pack object attributes into self.msg_data (bytearray)
141143
# @return self.msg_data
@@ -182,7 +184,7 @@ def unpack_msg_data(self, msg_data):
182184
try:
183185
self.name = self.payload_dict[self.message_id]["name"]
184186
except KeyError:
185-
print("Unknown message: ", self.message_id)
187+
logger.debug("Unknown message: %s", self.message_id)
186188
return False
187189

188190
## The field names of this message
@@ -196,10 +198,15 @@ def unpack_msg_data(self, msg_data):
196198
try:
197199
payload = struct.unpack(PingMessage.endianess + self.payload_format, self.msg_data[PingMessage.headerLength:PingMessage.headerLength + self.payload_length])
198200
except Exception as e:
199-
print("error unpacking payload: %s" % e)
200-
print("msg_data: %s, header: %s" % (msg_data, header))
201-
print("format: %s, buf: %s" % (PingMessage.endianess + self.payload_format, self.msg_data[PingMessage.headerLength:PingMessage.headerLength + self.payload_length]))
202-
print(self.payload_format)
201+
logger.debug(
202+
"Error unpacking payload: %s; msg_data=%s; header=%s; format=%s; buf=%s",
203+
e,
204+
msg_data,
205+
header,
206+
PingMessage.endianess + self.payload_format,
207+
self.msg_data[PingMessage.headerLength:PingMessage.headerLength + self.payload_length],
208+
exc_info=True,
209+
)
203210
else: # only use payload if didn't raise exception
204211
for i, attr in enumerate(self.payload_field_names):
205212
try:

‎generate/templates/device.py.in‎

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@
1111
from brping import definitions
1212
from brping import pingmessage
1313
from collections import deque
14+
import logging
1415
import serial
1516
import socket
1617
import time
1718

19+
logger = logging.getLogger(__name__)
20+
1821
class PingDevice(object):
1922
{% for field in all_fields|sort %}
2023
_{{field}} = None
@@ -47,11 +50,10 @@ class PingDevice(object):
4750
#
4851
def connect_serial(self, device_name: str, baudrate: int =115200):
4952
if device_name is None:
50-
print("Device name is required")
51-
return
53+
raise ValueError("Device name is required")
5254

5355
try:
54-
print("Opening %s at %d bps" % (device_name, baudrate))
56+
logger.info("Opening %s at %d bps", device_name, baudrate)
5557

5658
## Serial object for device communication
5759
# write_timeout fixes it getting stuck forever atempting to write to
@@ -62,7 +64,7 @@ class PingDevice(object):
6264
try:
6365
self.iodev.set_low_latency_mode(True)
6466
except Exception as exception:
65-
print("Failed to set low latency mode: {0}".format(exception))
67+
logger.debug("Failed to set low latency mode: %s", exception, exc_info=True)
6668
self.iodev.send_break()
6769
time.sleep(0.001)
6870
self.iodev.write("U".encode("ascii"))
@@ -82,7 +84,7 @@ class PingDevice(object):
8284

8385
self.server_address = (host, port)
8486
try:
85-
print("Opening %s:%d" % self.server_address)
87+
logger.info("Opening %s:%d", *self.server_address)
8688
## Serial object for device communication
8789
self.iodev = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
8890
self.iodev.connect(self.server_address)
@@ -198,14 +200,20 @@ class PingDevice(object):
198200
self._dst_device_id = msg.dst_device_id
199201

200202
if not hasattr(msg, "payload_field_names"):
201-
print(f"Unrecognized message: {msg.message_id}")
203+
logger.debug("Unrecognized message: %s", msg.message_id)
202204
return False
203205

204206
try:
205207
for attr in msg.payload_field_names:
206208
setattr(self, "_" + attr, getattr(msg, attr))
207209
except AttributeError as e:
208-
print("attribute error while handling msg %d (%s): %s" % (msg.message_id, msg.name, msg.msg_data))
210+
logger.debug(
211+
"Attribute error while handling msg %d (%s): %s",
212+
msg.message_id,
213+
msg.name,
214+
msg.msg_data,
215+
exc_info=True,
216+
)
209217
return False
210218

211219
return True

‎generate/templates/omniscan3d.py.in‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from brping import definitions
1010
from brping import PingDevice
1111
from brping import pingmessage
12+
import logging
1213
import math
1314
import time
1415
import struct
@@ -23,6 +24,7 @@ import sys
2324
import platform
2425

2526
MAX_LOG_SIZE_MB = 500
27+
logger = logging.getLogger(__name__)
2628

2729
class Omniscan3D(PingDevice):
2830
def __init__(self, logging = False, log_directory = None):
@@ -253,7 +255,7 @@ class Omniscan3D(PingDevice):
253255
self.logging = True
254256
self.bytes_written = 0
255257

256-
print(f"Logging to {self.current_log}")
258+
logger.info("Logging to %s", self.current_log)
257259

258260
self.write_data(self.build_metadata_packet())
259261

@@ -271,11 +273,11 @@ class Omniscan3D(PingDevice):
271273
self.bytes_written += len(msg.msg_data)
272274

273275
except (OSError, IOError) as e:
274-
print(f"[LOGGING ERROR] Failed to write to log file {self.current_log}: {e}")
276+
logger.exception("Failed to write to log file %s", self.current_log)
275277
self.stop_logging()
276278

277279
except Exception as e:
278-
print(f"[LOGGING ERROR] Unexpected error: {e}")
280+
logger.exception("Unexpected error while writing to log file %s", self.current_log)
279281
self.stop_logging()
280282

281283
# Override wait_message to also handle point set requests from Omniscan3D and for creating atof_t data
@@ -308,14 +310,13 @@ class Omniscan3D(PingDevice):
308310

309311
self.server_address = (host, port)
310312
try:
311-
print("Opening %s:%d" % self.server_address)
313+
logger.info("Opening %s:%d", *self.server_address)
312314
self.iodev = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
313315
self.iodev.settimeout(timeout)
314316
self.iodev.connect(self.server_address)
315317
self.iodev.setblocking(0)
316318

317319
except socket.timeout:
318-
print("Unable to connect to device")
319320
raise Exception("Connection timed out after {0} seconds".format(timeout))
320321
except Exception as exception:
321322
raise Exception("Failed to open the given TCP port: {0}".format(exception))
@@ -416,4 +417,4 @@ if __name__ == "__main__":
416417
try:
417418
p.iodev.close()
418419
except Exception as e:
419-
print(f"Failed to close socket: {e}")
420+
print(f"Failed to close socket: {e}")

‎generate/templates/omniscan450.py.in‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from brping import definitions
1212
from brping import PingDevice
1313
from brping import pingmessage
14+
import logging
1415
import time
1516
import math
1617
import struct
@@ -25,6 +26,7 @@ import sys
2526
import platform
2627

2728
MAX_LOG_SIZE_MB = 500
29+
logger = logging.getLogger(__name__)
2830

2931
class Omniscan450(PingDevice):
3032
def __init__(self, logging = False, log_directory = None):
@@ -262,7 +264,7 @@ class Omniscan450(PingDevice):
262264
self.logging = True
263265
self.bytes_written = 0
264266

265-
print(f"Logging to {self.current_log}")
267+
logger.info("Logging to %s", self.current_log)
266268

267269
self.write_data(self.build_metadata_packet())
268270

@@ -280,11 +282,11 @@ class Omniscan450(PingDevice):
280282
self.bytes_written += len(msg.msg_data)
281283

282284
except (OSError, IOError) as e:
283-
print(f"[LOGGING ERROR] Failed to write to log file {self.current_log}: {e}")
285+
logger.exception("Failed to write to log file %s", self.current_log)
284286
self.stop_logging()
285287

286288
except Exception as e:
287-
print(f"[LOGGING ERROR] Unexpected error: {e}")
289+
logger.exception("Unexpected error while writing to log file %s", self.current_log)
288290
self.stop_logging()
289291

290292
# Override wait_message to format power results before returning
@@ -317,14 +319,13 @@ class Omniscan450(PingDevice):
317319

318320
self.server_address = (host, port)
319321
try:
320-
print("Opening %s:%d" % self.server_address)
322+
logger.info("Opening %s:%d", *self.server_address)
321323
self.iodev = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
322324
self.iodev.settimeout(timeout)
323325
self.iodev.connect(self.server_address)
324326
self.iodev.setblocking(0)
325327

326328
except socket.timeout:
327-
print("Unable to connect to device")
328329
raise Exception("Connection timed out after {0} seconds".format(timeout))
329330
except Exception as exception:
330331
raise Exception("Failed to open the given TCP port: {0}".format(exception))
@@ -388,4 +389,4 @@ if __name__ == "__main__":
388389
try:
389390
p.iodev.close()
390391
except Exception as e:
391-
print(f"Failed to close socket: {e}")
392+
print(f"Failed to close socket: {e}")

‎generate/templates/s500.py.in‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from brping import definitions
1212
from brping import PingDevice
1313
from brping import pingmessage
14+
import logging
1415
import time
1516
import struct
1617
import socket
@@ -23,6 +24,7 @@ import sys
2324
import platform
2425

2526
MAX_LOG_SIZE_MB = 500
27+
logger = logging.getLogger(__name__)
2628

2729
class S500(PingDevice):
2830
def __init__(self, logging = False, log_directory = None):
@@ -121,14 +123,13 @@ class S500(PingDevice):
121123

122124
self.server_address = (host, port)
123125
try:
124-
print("Opening %s:%d" % self.server_address)
126+
logger.info("Opening %s:%d", *self.server_address)
125127
self.iodev = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
126128
self.iodev.settimeout(timeout)
127129
self.iodev.connect(self.server_address)
128130
self.iodev.setblocking(0)
129131

130132
except socket.timeout:
131-
print("Unable to connect to device")
132133
raise Exception("Connection timed out after {0} seconds".format(timeout))
133134
except Exception as exception:
134135
raise Exception("Failed to open the given TCP port: {0}".format(exception))
@@ -296,7 +297,7 @@ class S500(PingDevice):
296297
self.logging = True
297298
self.bytes_written = 0
298299

299-
print(f"Logging to {self.current_log}")
300+
logger.info("Logging to %s", self.current_log)
300301

301302
self.write_data(self.build_metadata_packet())
302303

@@ -314,11 +315,11 @@ class S500(PingDevice):
314315
self.bytes_written += len(msg.msg_data)
315316

316317
except (OSError, IOError) as e:
317-
print(f"[LOGGING ERROR] Failed to write to log file {self.current_log}: {e}")
318+
logger.exception("Failed to write to log file %s", self.current_log)
318319
self.stop_logging()
319320

320321
except Exception as e:
321-
print(f"[LOGGING ERROR] Unexpected error: {e}")
322+
logger.exception("Unexpected error while writing to log file %s", self.current_log)
322323
self.stop_logging()
323324

324325
# Override wait_message to format power results before returning
@@ -367,4 +368,4 @@ if __name__ == "__main__":
367368
try:
368369
p.iodev.close()
369370
except Exception as e:
370-
print(f"Failed to close socket: {e}")
371+
print(f"Failed to close socket: {e}")

‎generate/templates/surveyor240.py.in‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from brping import definitions
1212
from brping import PingDevice
1313
from brping import pingmessage
14+
import logging
1415
import math
1516
import time
1617
import struct
@@ -25,6 +26,7 @@ import sys
2526
import platform
2627

2728
MAX_LOG_SIZE_MB = 500
29+
logger = logging.getLogger(__name__)
2830

2931
class Surveyor240(PingDevice):
3032
def __init__(self, logging = False, log_directory = None):
@@ -254,7 +256,7 @@ class Surveyor240(PingDevice):
254256
self.logging = True
255257
self.bytes_written = 0
256258

257-
print(f"Logging to {self.current_log}")
259+
logger.info("Logging to %s", self.current_log)
258260

259261
self.write_data(self.build_metadata_packet())
260262

@@ -272,11 +274,11 @@ class Surveyor240(PingDevice):
272274
self.bytes_written += len(msg.msg_data)
273275

274276
except (OSError, IOError) as e:
275-
print(f"[LOGGING ERROR] Failed to write to log file {self.current_log}: {e}")
277+
logger.exception("Failed to write to log file %s", self.current_log)
276278
self.stop_logging()
277279

278280
except Exception as e:
279-
print(f"[LOGGING ERROR] Unexpected error: {e}")
281+
logger.exception("Unexpected error while writing to log file %s", self.current_log)
280282
self.stop_logging()
281283

282284
# Override handle_message to respond to a UTC request from Surveyor
@@ -327,14 +329,13 @@ class Surveyor240(PingDevice):
327329

328330
self.server_address = (host, port)
329331
try:
330-
print("Opening %s:%d" % self.server_address)
332+
logger.info("Opening %s:%d", *self.server_address)
331333
self.iodev = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
332334
self.iodev.settimeout(timeout)
333335
self.iodev.connect(self.server_address)
334336
self.iodev.setblocking(0)
335337

336338
except socket.timeout:
337-
print("Unable to connect to device")
338339
raise Exception("Connection timed out after {0} seconds".format(timeout))
339340
except Exception as exception:
340341
raise Exception("Failed to open the given TCP port: {0}".format(exception))
@@ -434,4 +435,4 @@ if __name__ == "__main__":
434435
try:
435436
p.iodev.close()
436437
except Exception as e:
437-
print(f"Failed to close socket: {e}")
438+
print(f"Failed to close socket: {e}")

0 commit comments

Comments
 (0)