26 lines
973 B
Python
26 lines
973 B
Python
import logging
|
|
import sys
|
|
|
|
class WarningFilter(logging.Filter):
|
|
def filter(self, record):
|
|
if record.levelno == logging.WARNING:
|
|
record.msg = f"Warn!: {record.msg}"
|
|
return True
|
|
|
|
def create_handler(stream, levels, formatter):
|
|
handler = logging.StreamHandler(stream)
|
|
handler.setLevel(min(levels))
|
|
handler.addFilter(lambda record: record.levelno in levels)
|
|
handler.addFilter(WarningFilter()) # Apply the custom filter
|
|
handler.setFormatter(formatter)
|
|
|
|
return handler
|
|
def setup_logger(logger_name, level, stdout_levels, stderr_levels, formatter):
|
|
logger = logging.getLogger(logger_name)
|
|
for handler in logger.handlers[:]:
|
|
logger.removeHandler(handler)
|
|
logger.setLevel(level)
|
|
stdout_handler = create_handler(sys.stdout, stdout_levels, formatter)
|
|
stderr_handler = create_handler(sys.stderr, stderr_levels, formatter)
|
|
logger.addHandler(stdout_handler)
|
|
logger.addHandler(stderr_handler) |