ChipWhisperer Logging

As of ChipWhisperer 5.5.1, logging has been reworked in ChipWhisperer to take advantage of having multiple specialized loggers. Instead of using the default logger for everything, we now use 6 primary loggers for different parts of ChipWhisperer software (from chipwhisperer.logging):

other_logger = logging.getLogger("ChipWhisperer Other")
target_logger = logging.getLogger("ChipWhisperer Target")
scope_logger = logging.getLogger("ChipWhisperer Scope")
naeusb_logger = logging.getLogger("ChipWhisperer NAEUSB")
tracewhisperer_logger = logging.getLogger("ChipWhisperer TraceWhisperer")
glitch_logger = logging.getLogger("ChipWhisperer Glitch")

These loggers are all in the top level ChipWhisperer __init__.py, so you can do:

import chipwhisperer as cw
cw.scope_logger.warning("Test warning")

This allows you to turn different parts of the software to different logging levels. For example, if you’re having issues communicating with the target, you might set the target_logger to debug:

import chipwhisperer as cw
import logging
cw.target_logger.setLevel(logging.DEBUG)

Or if you’re doing glitching and find the warnings about double glitches and width/offset of 0 annoying:

cw.glitch_logger.setLevel(logging.ERROR)

There’s also a convenience function for setting the logging level of all the ChipWhisperer levels:

cw.set_all_log_levels(logging.WARNING)