aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/addons/termlog.py
blob: f09aa4b4126149ba27756fdb91a72a1dfa19d47a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import sys
import click

from mitmproxy import log
from mitmproxy import ctx

# These get over-ridden by the save execution context. Keep them around so we
# can log directly.
realstdout = sys.stdout
realstderr = sys.stderr


class TermLog:
    def __init__(self, outfile=None):
        self.outfile = outfile

    def load(self, loader):
        loader.add_option(
            "termlog_verbosity", str, 'info',
            "Log verbosity.",
            choices=log.LogTierOrder
        )

    def log(self, e):
        if log.log_tier(e.level) == log.log_tier("error"):
            outfile = self.outfile or realstderr
        else:
            outfile = self.outfile or realstdout

        if log.log_tier(ctx.options.termlog_verbosity) >= log.log_tier(e.level):
            click.secho(
                e.msg,
                file=outfile,
                fg=dict(error="red", warn="yellow",
                        alert="magenta").get(e.level),
                dim=(e.level == "debug"),
                err=(e.level == "error")
            )