1+ import logging
12import sys
23from pathlib import Path
34from typing import Any , Callable , NoReturn , Optional
@@ -40,6 +41,12 @@ def creator_options(f: Callable[..., Any]) -> Callable[..., Any]:
4041 return f
4142
4243
44+ class LowerCaseFormatter (logging .Formatter ):
45+ def format (self , record : logging .LogRecord ) -> str :
46+ record .levelname = record .levelname .lower ()
47+ return super ().format (record )
48+
49+
4350@click .group (context_settings = CONTEXT_SETTINGS )
4451@click .version_option ()
4552@click .option (
@@ -51,9 +58,20 @@ def creator_options(f: Callable[..., Any]) -> Callable[..., Any]:
5158 default = default_profile_dir ,
5259 help = "Defaults to $XDG_DATA_HOME/qutebrowser-profiles." ,
5360)
61+ @click .option (
62+ "-l" ,
63+ "--log-level" ,
64+ default = "error" ,
65+ type = click .Choice (["debug" , "info" , "error" ], case_sensitive = False ),
66+ )
5467@click .pass_context
55- def main (ctx : click .Context , profile_dir : Path ) -> None :
68+ def main (ctx : click .Context , profile_dir : Path , log_level : str ) -> None :
5669 ctx .obj = profile_dir
70+ root_logger = logging .getLogger ()
71+ root_logger .setLevel (log_level .upper ())
72+ handler = logging .StreamHandler ()
73+ handler .setFormatter (LowerCaseFormatter ("{levelname:>6}: {message}" , style = "{" ))
74+ root_logger .addHandler (handler )
5775
5876
5977@main .command ()
0 commit comments