Skip to content

Commit 6a60f1e

Browse files
committed
Fix loglevel bug, cleanup deepcopy
1 parent e1718bf commit 6a60f1e

2 files changed

Lines changed: 14 additions & 23 deletions

File tree

src/daqpytools/apps/logging_demonstrator.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
LogHandlerConf,
1111
dummy_add_erstrace_handler,
1212
ThrottleFilter,
13+
ERSHandlerConf,
14+
StreamType,
1315
)
1416
from daqpytools.logging.levels import logging_log_level_keys
1517
from daqpytools.logging.logger import get_daq_logger

src/daqpytools/logging/handlers.py

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io
44
import logging
5+
import copy
56
import os
67
import re
78
import sys
@@ -190,17 +191,22 @@ def reset(self):
190191
class BaseHandlerFilter(logging.Filter):
191192
def __init__(self):
192193
super().__init__()
194+
#TODO/ask: See if we want to define this mapping elsewhere
195+
self.level_to_ers_var = {
196+
logging.ERROR: "DUNEDAQ_ERS_ERROR",
197+
logging.WARNING: "DUNEDAQ_ERS_WARNING",
198+
logging.CRITICAL: "DUNEDAQ_ERS_FATAL",
199+
logging.INFO: "DUNEDAQ_ERS_INFO",
200+
}
193201

194202
def get_allowed(self, record) -> list | None:
195203
# TODO/future: kafka protobufs should validate url/port match before transmitting
196204

197205
# Handle the ERS case, requires more processing
198206
if getattr(record, "stream", None) == StreamType.ERS:
199-
#TODO/ask: See if we want to define this mapping elsewhere
200-
201207
# Chain None checks using walrus operator
202208
if (
203-
(ers_level_var := level_to_ers_var.get(record.levelname)) is None
209+
(ers_level_var := self.level_to_ers_var.get(record.levelno)) is None
204210
or (ers_handlers := getattr(record, "ers_handlers", None)) is None
205211
or (ershandlerconf := ers_handlers.get(ers_level_var)) is None
206212
):
@@ -357,32 +363,15 @@ def _report_suppression(self, rec: IssueRecord, record: logging.LogRecord):
357363
if rec.suppressed_counter == 0:
358364
return
359365

360-
# Create a new log record for the suppression notice
361-
suppression_record = logging.LogRecord(
362-
name=record.name,
363-
level=record.levelno,
364-
pathname=record.pathname,
365-
lineno=record.lineno,
366-
msg=record.msg,
367-
args=record.args,
368-
exc_info=None,
369-
func=record.funcName,
370-
sinfo=None
371-
)
372-
373-
# Attach other attributes and set throttle suppression
374-
suppression_record._throttle_suppression = True
375-
for key in record.__dict__:
376-
if not hasattr(suppression_record, key):
377-
setattr(suppression_record, key, getattr(record, key))
366+
suppression_record = copy.deepcopy(record)
367+
suppression_record._throttle_suppression = True # pass through filter to report
378368

379369
# Append suppression information to the message
380-
original_msg = record.getMessage()
381370
suppression_msg = (
382371
f" -- {rec.suppressed_counter} similar messages suppressed, "
383372
f"last occurrence was at {rec.last_occurrence_formatted}"
384373
)
385-
suppression_record.msg = original_msg + suppression_msg
374+
suppression_record.msg = record.getMessage() + suppression_msg
386375
suppression_record.args = () # Clear args since we already formatted
387376

388377
# Emit directly - will pass through filter due to flag

0 commit comments

Comments
 (0)