Source code for django_honeyguard.loggers

"""Logging utilities for django-honeyguard."""

import logging
from typing import Any

from .conf import settings as honeyguard_settings


[docs] class HoneyGuardLogger: """ Custom logger wrapper that respects HoneyGuard settings. This logger checks ENABLE_CONSOLE_LOGGING before actually logging, and respects the configured LOG_LEVEL. """
[docs] def __init__(self, name: str) -> None: """ Initialize logger with given name. Args: name: Logger name (usually __name__) """ self.logger: logging.Logger = logging.getLogger(name) self._log_level_map: dict[str, int] = { "DEBUG": logging.DEBUG, "INFO": logging.INFO, "WARNING": logging.WARNING, "ERROR": logging.ERROR, "CRITICAL": logging.CRITICAL, }
def _should_log(self, level: int) -> bool: """ Check if logging is enabled and level is appropriate. Args: level: Logging level (e.g., logging.WARNING) Returns: bool: True if should log, False otherwise """ if not honeyguard_settings.ENABLE_CONSOLE_LOGGING: return False # Get configured minimum level configured_level_str = honeyguard_settings.LOG_LEVEL.upper() configured_level = self._log_level_map.get( configured_level_str, logging.WARNING ) # Only log if the message level meets or exceeds configured level return level >= configured_level
[docs] def debug(self, msg: str, *args: Any, **kwargs: Any) -> None: """Log debug message if enabled.""" if self._should_log(logging.DEBUG): self.logger.debug(msg, *args, **kwargs)
[docs] def info(self, msg: str, *args: Any, **kwargs: Any) -> None: """Log info message if enabled.""" if self._should_log(logging.INFO): self.logger.info(msg, *args, **kwargs)
[docs] def warning(self, msg: str, *args: Any, **kwargs: Any) -> None: """Log warning message if enabled.""" if self._should_log(logging.WARNING): self.logger.warning(msg, *args, **kwargs)
[docs] def error(self, msg: str, *args: Any, **kwargs: Any) -> None: """Log error message if enabled.""" if self._should_log(logging.ERROR): self.logger.error(msg, *args, **kwargs)
[docs] def critical(self, msg: str, *args: Any, **kwargs: Any) -> None: """Log critical message if enabled.""" if self._should_log(logging.CRITICAL): self.logger.critical(msg, *args, **kwargs)
[docs] def get_logger(name: str) -> HoneyGuardLogger: """ Get a HoneyGuard logger instance. Args: name: Logger name (usually __name__) Returns: HoneyGuardLogger: Logger instance that respects HoneyGuard settings """ return HoneyGuardLogger(name)