hutch_python.log_setup.ObjectFilter¶
- class hutch_python.log_setup.ObjectFilter(*objects: OphydObject, level: str = 'WARNING', whitelist_all_level: str = 'WARNING', noisy_threshold_1s: int = 20, noisy_threshold_10s: int = 50, noisy_threshold_60s: int = 100, whitelist: list[str] | None = None, blacklist: list[str] | None = None, allow_other_messages: bool = True)¶
A logging filter that limits log messages to a specific object or objects.
To be paired with a logging handler added to the ophyd object logger.
Additionally has the capability of filtering out noisy loggers based on three thresholds: log message rates at 1 second, 10 seconds, and 60 seconds.
- Parameters:
objs (iterable of OphydObject) – Ophyd objects to filter.
level (str or int) – Cut-off level for log messages. Default is ‘WARNING’. Python log level names or their corresponding integers are accepted.
whitelist_all_level (str or int) – Cut-off level for log messages. Default is ‘WARNING’. Python log level names or their corresponding integers are accepted.
allow_other_messages (bool, optional) – Allow messages through the filter that are not specific to ophyd objects. Ophyd object-related messages _must_ pass the filter.
noisy_threshold_1s (int, optional) – If a single ophyd object logs over
noisy_threshold_1s
log messages in one second, consider it a noisy logger and silence it. May be disabled by setting to 0.noisy_threshold_10s (int, optional) – If a single ophyd object logs over
noisy_threshold_10s
log messages in ten seconds, consider it a noisy logger and silence it. May be disabled by setting to 0.noisy_threshold_60s (int, optional) – If a single ophyd object logs over
noisy_threshold_60s
log messages in 60 seconds, consider it a noisy logger and silence it. May be disabled by setting to 0.whitelist (list of str, optional) – Logger or object names that are not subject to the thresholds above.
blacklist (list of str, optional) – Logger or object names that should always be filtered out.
- blacklist¶
Logger names that should always be filtered out.
- Type:
list of str
- whitelist¶
List of noisy loggers or object names that are exempt from the noise thresholds.
- Type:
list of str
- noisy_loggers¶
Loggers marked as noisy and to be filtered out, unless in the whitelist.
- Type:
set of str
- __init__(*objects: OphydObject, level: str = 'WARNING', whitelist_all_level: str = 'WARNING', noisy_threshold_1s: int = 20, noisy_threshold_10s: int = 50, noisy_threshold_60s: int = 100, whitelist: list[str] | None = None, blacklist: list[str] | None = None, allow_other_messages: bool = True)¶
Initialize a filter.
Initialize with the name of the logger which, together with its children, will have its events allowed through the filter. If no name is specified, allow every event.
Methods
__init__
(*objects[, level, ...])Initialize a filter.
disable
()Disable the filter.
filter
(record)Determine if the specified record is to be logged.
stop
()Stop updating logging rates in the background.
Attributes
description
A description of the current configuration.
level
The logging level name.
levelno
The logging level number.
object_names
The names of all contained objects.
objects
The objects to log.
whitelist_all_level
The logging level at which we whitelist all objects.
allow_other_messages
name_to_log_count_1s
name_to_log_count_10s
name_to_log_count_60s
noisy_threshold_1s
noisy_threshold_10s
noisy_threshold_60s