Belle II Software
release-05-01-25
logfilter.py
1
"""
2
Log Filter class to replace string occurences in log messages to simplify testing
3
"""
4
import
re
5
6
7
class
LogReplacementFilter
:
8
"""
9
Simple class to intercept anything written to python stdout and replace
10
a given set of strings with placehholders to improve reproducibility.
11
"""
12
def
__init__
(self, out, replacements):
13
"""Setup the forwarding and replacements
14
15
Parameters:
16
out (file object): Where to forward the output too
17
replacements (dict(str, str)): Dictionary of strings and their replacements
18
"""
19
20
self.
_out
= out
21
22
self.
_replacements
= replacements
23
24
self.
_regex
= re.compile(
"|"
.join(re.escape(e)
for
e
in
replacements))
25
26
def
write
(self, data):
27
"""Check all messages for strings to replace"""
28
replaced = self.
_regex
.sub(
lambda
m: self.
_replacements
[m[0]], data)
29
self.
_out
.
write
(replaced)
30
31
def
__getattr__
(self, name):
32
"""Forward all other methods from the out stream"""
33
return
getattr(self.
_out
, name)
b2test_utils.logfilter.LogReplacementFilter.__getattr__
def __getattr__(self, name)
Definition:
logfilter.py:31
b2test_utils.logfilter.LogReplacementFilter._out
_out
where to forward output
Definition:
logfilter.py:20
b2test_utils.logfilter.LogReplacementFilter.__init__
def __init__(self, out, replacements)
Definition:
logfilter.py:12
b2test_utils.logfilter.LogReplacementFilter.write
def write(self, data)
Definition:
logfilter.py:26
b2test_utils.logfilter.LogReplacementFilter._regex
_regex
build a regular expression from dictionary keys
Definition:
logfilter.py:24
b2test_utils.logfilter.LogReplacementFilter._replacements
_replacements
what to replace
Definition:
logfilter.py:22
b2test_utils.logfilter.LogReplacementFilter
Definition:
logfilter.py:7
framework
scripts
b2test_utils
logfilter.py
Generated on Fri Nov 5 2021 03:52:44 for Belle II Software by
1.8.17