Module Logs_cli
Cmdliner support for Logs.
See a full example.
v0.7.0 - homepage
Options for setting the report level
val level : ?env:Cmdliner.Arg.env -> ?docs:string -> unit -> Logs.level option Cmdliner.Term.tlevel ?env ?docs ()is a term for threeCmdlineroptions that can be used withLogs.set_level. The options are documented underdocs(defaults to the default ofCmdliner.Arg.info).The options work as follows:
-vor--verbose, if it appears once, the value of the term is isSome Logs.Infoand more than onceSome Logs.Debug.--verbosity=LEVEL, the value of the term islwhereldepends on onLEVEL. Takes over the option-v.-qor--quiet, the value of the term isNone. Takes over the-vand--verbosityoptions.- If both options are absent the default value is
Some Logs.warning
If
envis provided, the default value in case all options are absent can be overridden by the corresponding environment variable.
Example
The following example shows how to setup Logs and Fmt so that logging is performed on standard outputs with ANSI coloring if these are ttys. The command line interface provides options to control the use of colors and the log reporting level.
let hello () = Logs.app (fun m -> m "Hello horrible world!")
let setup_log style_renderer level =
Fmt_tty.setup_std_outputs ?style_renderer ();
Logs.set_level level;
Logs.set_reporter (Logs_fmt.reporter ());
()
(* Command line interface *)
open Cmdliner
let setup_log =
Term.(const setup_log $ Fmt_cli.style_renderer () $ Logs_cli.level ())
let main () =
match Term.(eval (const hello $ setup_log, Term.info "tool")) with
| `Error _ -> exit 1
| _ -> exit (if Logs.err_count () > 0 then 1 else 0)
let () = main ()