module Logs_cli:sig
..end
Cmdliner
support for Logs
.
See a full example.
Release 0.5.0 - Daniel Bünzli <daniel.buenzl i@erratique.ch>
val level : ?env:Cmdliner.Arg.env ->
?docs:string -> unit -> Logs.level option Cmdliner.Term.t
level ?env ?docs ()
is a term for two Cmdliner
options that
can be used with Logs.set_level
. The options are documented
under docs
(defaults to the default of Cmdliner.Arg.info
).
The options work as follows:
-v [LEVEL]
or --verbose=[LEVEL]
, the value of the term
is Some l
where l
depends on LEVEL
. If LEVEL
is
unspecified the value of the term is Some Logs.Info
.-q
or --quiet
, the value of the term is None
. Takes
over the --verbose
option if both are present.Some Logs.warning
If env
is provided, the default value in case both options are
absent can be overridden by the corresponding environment
variable.
The following example shows how to setup Logs
and Fmt
so
that logging is performed on standard outputs with ANSI coloring
if these are tty
s. 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 ()