Skip to content

Commit b484ce4

Browse files
committed
Work around repeated log messages from pypemicro during listing.
1 parent 3b15009 commit b484ce4

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

pyocd_pemicro/pemicro_probe.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,18 @@ class PEMicroProbe(DebugProbe):
6161
# matching the system's architecture, or other similar reasons.
6262
NO_LIBRARY_ERR = "Unable to find any usable library"
6363

64+
_set_pypemicro_log_level = False
65+
_saved_pypemicro_logger_level = 0
66+
6467
@classmethod
6568
def _get_pemicro(cls):
69+
# Work around voluminous logging from pypemicro.
70+
if not cls._set_pypemicro_log_level:
71+
cls._set_pypemicro_log_level = True
72+
pelogger = logging.getLogger('pypemicro')
73+
cls._saved_pypemicro_logger_level = pelogger.getEffectiveLevel()
74+
pelogger.setLevel(logging.WARNING)
75+
6676
# PEMicroException is raised by PyPemicro if the PEMicro DLL cannot be found.
6777
try:
6878
return PyPemicro(log_debug=TRACE.debug,
@@ -113,6 +123,10 @@ def __init__(self, serial_number):
113123
if self._pemicro is None:
114124
raise exceptions.ProbeError("unable to get PEMicro DLL")
115125

126+
# Set log level back to what it was originally. Note that this trick has race issues if multiple probes
127+
# are accessed simultaneously within one process.
128+
logging.getLogger('pypemicro').setLevel(self._saved_pypemicro_logger_level)
129+
116130
self._serial_number = serial_number
117131
self._supported_protocols = []
118132
self._protocol = None

0 commit comments

Comments
 (0)