|
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 |
@@ -193,23 +194,22 @@ def reset(self): |
193 | 194 | class BaseHandlerFilter(logging.Filter): |
194 | 195 | def __init__(self): |
195 | 196 | super().__init__() |
| 197 | + #TODO/ask: See if we want to define this mapping elsewhere |
| 198 | + self.level_to_ers_var = { |
| 199 | + logging.ERROR: "DUNEDAQ_ERS_ERROR", |
| 200 | + logging.WARNING: "DUNEDAQ_ERS_WARNING", |
| 201 | + logging.CRITICAL: "DUNEDAQ_ERS_FATAL", |
| 202 | + logging.INFO: "DUNEDAQ_ERS_INFO", |
| 203 | + } |
196 | 204 |
|
197 | 205 | def get_allowed(self, record) -> list | None: |
198 | 206 | # TODO/future: kafka protobufs should validate url/port match before transmitting |
199 | 207 |
|
200 | 208 | # Handle the ERS case, requires more processing |
201 | 209 | if getattr(record, "stream", None) == StreamType.ERS: |
202 | | - #TODO/ask: See if we want to define this mapping elsewhere |
203 | | - level_to_ers_var = { |
204 | | - "ERROR": "DUNEDAQ_ERS_ERROR", |
205 | | - "WARNING": "DUNEDAQ_ERS_WARNING", |
206 | | - "CRITICAL": "DUNEDAQ_ERS_FATAL", |
207 | | - "INFO": "DUNEDAQ_ERS_INFO", |
208 | | - } |
209 | | - |
210 | 210 | # Chain None checks using walrus operator |
211 | 211 | if ( |
212 | | - (ers_level_var := level_to_ers_var.get(record.levelname)) is None |
| 212 | + (ers_level_var := self.level_to_ers_var.get(record.levelno)) is None |
213 | 213 | or (ers_handlers := getattr(record, "ers_handlers", None)) is None |
214 | 214 | or (ershandlerconf := ers_handlers.get(ers_level_var)) is None |
215 | 215 | ): |
@@ -362,32 +362,15 @@ def _report_suppression(self, rec: IssueRecord, record: logging.LogRecord): |
362 | 362 | if rec.suppressed_counter == 0: |
363 | 363 | return |
364 | 364 |
|
365 | | - # Create a new log record for the suppression notice |
366 | | - suppression_record = logging.LogRecord( |
367 | | - name=record.name, |
368 | | - level=record.levelno, |
369 | | - pathname=record.pathname, |
370 | | - lineno=record.lineno, |
371 | | - msg=record.msg, |
372 | | - args=record.args, |
373 | | - exc_info=None, |
374 | | - func=record.funcName, |
375 | | - sinfo=None |
376 | | - ) |
377 | | - |
378 | | - # Attach other attributes and set throttle suppression |
379 | | - suppression_record._throttle_suppression = True |
380 | | - for key in record.__dict__: |
381 | | - if not hasattr(suppression_record, key): |
382 | | - setattr(suppression_record, key, getattr(record, key)) |
| 365 | + suppression_record = copy.deepcopy(record) |
| 366 | + suppression_record._throttle_suppression = True # pass through filter to report |
383 | 367 |
|
384 | 368 | # Append suppression information to the message |
385 | | - original_msg = record.getMessage() |
386 | 369 | suppression_msg = ( |
387 | 370 | f" -- {rec.suppressed_counter} similar messages suppressed, " |
388 | 371 | f"last occurrence was at {rec.last_occurrence_formatted}" |
389 | 372 | ) |
390 | | - suppression_record.msg = original_msg + suppression_msg |
| 373 | + suppression_record.msg = record.getMessage() + suppression_msg |
391 | 374 | suppression_record.args = () # Clear args since we already formatted |
392 | 375 |
|
393 | 376 | # Emit directly - will pass through filter due to flag |
|
0 commit comments