|
2 | 2 |
|
3 | 3 | import io |
4 | 4 | import logging |
| 5 | +import copy |
5 | 6 | import os |
6 | 7 | import re |
7 | 8 | import sys |
@@ -190,17 +191,22 @@ def reset(self): |
190 | 191 | class BaseHandlerFilter(logging.Filter): |
191 | 192 | def __init__(self): |
192 | 193 | 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 | + } |
193 | 201 |
|
194 | 202 | def get_allowed(self, record) -> list | None: |
195 | 203 | # TODO/future: kafka protobufs should validate url/port match before transmitting |
196 | 204 |
|
197 | 205 | # Handle the ERS case, requires more processing |
198 | 206 | if getattr(record, "stream", None) == StreamType.ERS: |
199 | | - #TODO/ask: See if we want to define this mapping elsewhere |
200 | | - |
201 | 207 | # Chain None checks using walrus operator |
202 | 208 | 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 |
204 | 210 | or (ers_handlers := getattr(record, "ers_handlers", None)) is None |
205 | 211 | or (ershandlerconf := ers_handlers.get(ers_level_var)) is None |
206 | 212 | ): |
@@ -357,32 +363,15 @@ def _report_suppression(self, rec: IssueRecord, record: logging.LogRecord): |
357 | 363 | if rec.suppressed_counter == 0: |
358 | 364 | return |
359 | 365 |
|
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 |
378 | 368 |
|
379 | 369 | # Append suppression information to the message |
380 | | - original_msg = record.getMessage() |
381 | 370 | suppression_msg = ( |
382 | 371 | f" -- {rec.suppressed_counter} similar messages suppressed, " |
383 | 372 | f"last occurrence was at {rec.last_occurrence_formatted}" |
384 | 373 | ) |
385 | | - suppression_record.msg = original_msg + suppression_msg |
| 374 | + suppression_record.msg = record.getMessage() + suppression_msg |
386 | 375 | suppression_record.args = () # Clear args since we already formatted |
387 | 376 |
|
388 | 377 | # Emit directly - will pass through filter due to flag |
|
0 commit comments