Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
termlog.py51 linesDownload Raw Back to addons
1from __future__ import annotations2 3import asyncio4import logging5import sys6from typing import IO7 8from mitmproxy import ctx9from mitmproxy import log10from mitmproxy.utils import vt_codes11 12 13class TermLog:14    _teardown_task: asyncio.Task | None = None15 16    def __init__(self, out: IO[str] | None = None):17        self.logger = TermLogHandler(out)18        self.logger.install()19 20    def load(self, loader):21        loader.add_option(22            "termlog_verbosity", str, "info", "Log verbosity.", choices=log.LogLevels23        )24        self.logger.setLevel(logging.INFO)25 26    def configure(self, updated):27        if "termlog_verbosity" in updated:28            self.logger.setLevel(ctx.options.termlog_verbosity.upper())29 30    def uninstall(self) -> None:31        # uninstall the log dumper.32        # This happens at the very very end after done() is completed,33        # because we don't want to uninstall while other addons are still logging.34        self.logger.uninstall()35 36 37class TermLogHandler(log.MitmLogHandler):38    def __init__(self, out: IO[str] | None = None):39        super().__init__()40        self.file: IO[str] = out or sys.stdout41        self.has_vt_codes = vt_codes.ensure_supported(self.file)42        self.formatter = log.MitmFormatter(self.has_vt_codes)43 44    def emit(self, record: logging.LogRecord) -> None:45        try:46            print(self.format(record), file=self.file)47        except OSError:48            # We cannot print, exit immediately.49            # See https://github.com/mitmproxy/mitmproxy/issues/466950            sys.exit(1)51 
codekingpro/portable-devtools · Team Ai