HEX
Server: LiteSpeed
System: Linux srv1.dhviews.com 5.14.0-570.23.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Jun 24 11:27:16 EDT 2025 x86_64
User: bdedition (1723)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: //proc/thread-self/root/usr/local/lib/python3.9/site-packages/wordfence/logging/__init__.py
import logging
from typing import Optional
from enum import IntEnum
from dataclasses import dataclass

from .formatting import ConfigurableFormatter

DEFAULT_LOGGER_NAME = 'wordfence'
VERBOSE = 15


class LogLevel(IntEnum):
    DEBUG = logging.DEBUG
    VERBOSE = VERBOSE
    INFO = logging.INFO
    WARNING = logging.WARNING
    ERROR = logging.ERROR
    CRITICAL = logging.CRITICAL


logging.addLevelName(LogLevel.VERBOSE.value, LogLevel.VERBOSE.name)

logging.basicConfig(format='%(message)s')
log = logging.getLogger(DEFAULT_LOGGER_NAME)
root_log = logging.getLogger()

initial_handler: Optional[logging.Handler] = None


def remove_initial_handler() -> None:
    global initial_handler
    if initial_handler is not None:
        return
    initial_handler = root_log.handlers[0]
    root_log.removeHandler(initial_handler)


def restore_initial_handler(error_if_not_set: bool = False) -> None:
    global initial_handler
    if initial_handler is None:
        if error_if_not_set:
            raise ValueError("Unknown initial handler")
        return
    root_log.addHandler(initial_handler)
    initial_handler = None


def set_log_format(colored: bool = False, prefixed: bool = False) -> None:
    for handler in root_log.handlers:
        handler.setFormatter(
                ConfigurableFormatter(colored, prefixed)
            )


@dataclass
class LogSettings:
    level: LogLevel = LogLevel.WARNING
    colored: bool = False
    prefixed: bool = False

    def apply(self) -> None:
        log.setLevel(self.level)
        set_log_format(
                colored=self.colored,
                prefixed=self.prefixed
            )