Brr.Console
Browser console.
See Console
. Take a few minutes to understand this.
val get : unit -> t
get ()
is the console object on which the functions below act. Initially this is G.console
.
val set : t -> unit
set o
sets the console object to o
.
clear ()
clears the console.
type 'a msgr = 'a -> msg
The type for functions turning values of type 'a
into log messages.
val msg : 'a msgr
msg v
is [v]
.
type log = msg -> unit
The type for log functions.
Log messages rebind OCaml's list syntax. This allows to write heterogeneous logging statements concisely.
let () = Console.(log [1; 2.; true; Jv.true'; str "🐫"; G.navigator])
The console logs JavaScript values. For OCaml values this means that their js_of_ocaml
representation is logged; see the FFI manual for details. Most OCaml values behind Brr
types are however direct JavaScript values and logging them as is will be valuable. For other values you can use the str
function which invokes the JavaScript toString
method on the value. It works on OCaml strings and is mostly equivalent and shorter than calling Jstr.v
before logging them.
In the JavaScript console
API, if the first argument is a JavaScript string it can have formatting specifications. Just remember this should be a JavaScript string, so wrap OCaml literals by str
or Jstr.v
:
let () = Console.(log [str "This is:\n%o\n the navigator"; G.navigator])
val str : 'a -> Jstr.t
str v
is the result of invoking the JavaScript toString
method on the representation of v
. If v
is Jv.null
and Jv.undefined
a string representing them is directly returned.
Result
logginglog_result ~ok ~error r
is r
but logs r
using log
and ok
to format Ok v
and error
and error
for Error
e
. ok
defaults to [v]
and error
to [str e]
.
log_if_error ~l ~error_msg ~use r
is v
if r
is Ok v
and use
if r
is Error e
. In this case e
is logged with l
(defaults to error
) and error_msg
(defaults to str e
).
log_if_error'
is log_if_error
wrapped by Result
.ok.
val trace : log
trace m
logs m
with no specific level but with a stack trace, like error
and warn
do.
val table : ?cols:Jstr.t list -> 'a -> unit
table v
outputs v
as tabular data. If cols
is specified only the specified properties are printed.
val group : ?closed:bool -> log
group ~closed msg
logs msg
and pushes a new inline group in the console. This indents messages until group_end
is called. If closed
is true
(defaults to false
) the group's content is hidden behind a disclosure button.
group_end ()
pops the last inline group.
val count : Jstr.t -> unit
count label
logs label
with the number of times count label
was called.
time_log label msg
reports the timer value of label
with msg
appended to the report.