Library
Module
Module type
Parameter
Class
Class type
The logged traces will be pretty-printed as trees using the `printbox` package. This logger supports conditionally disabling a particular nesting of the logs, regardless of where in the nesting level no_debug_if
is called.
module _ : Shared_config
include Debug_runtime
val log_value_sexp :
?descr:string ->
entry_id:int ->
log_level:int ->
is_result:bool ->
Sexplib0.Sexp.t ->
unit
val log_value_pp :
?descr:string ->
entry_id:int ->
log_level:int ->
pp:(Format.formatter -> 'a -> unit) ->
is_result:bool ->
'a ->
unit
val log_value_printbox : entry_id:int -> log_level:int -> PrintBox.t -> unit
val max_nesting_depth : int option ref
val max_num_children : int option ref
For PrintBox
runtimes, outputs the current logging stack to the logging channel. If the logging channel supports that, an output following a snapshot will rewind the channel to the state prior to the snapshot. Does nothing for the Flushing
runtimes.
A description that should be sufficient to locate where the logs end up. If not configured explicitly, it will be some combination of: the global prefix, the file name or "stdout".
For PrintBox
runtimes, when passed true within the scope of a log subtree, disables the logging of this subtree and its subtrees. Does not do anything when passed false (no_debug_if false
does not re-enable the log). Does nothing for the Flushing
runtimes.
val log_level : int ref
The runtime log level.
The log levels are used both at compile time, and for the PrintBox runtime. Not logging at compile time means the corresponding logging code is not generated; not logging at runtime means the logging state is not updated.
type config = {
mutable hyperlink : [ `Prefix of string | `No_hyperlinks ];
If hyperlink
is `Prefix prefix
, code pointers are rendered as hyperlinks. When prefix
is either empty, starts with a dot, or starts with "http:"
or "https:"
, the link address has the form sprintf "%s#L%d" fname start_lnum
, allowing browsing in HTML directly. Otherwise, it has the form sprintf "%s:%d:%d" fname start_lnum (start_colnum + 1)
, intended for editor-specific prefixes such as "vscode://file/"
.
Note that rendering a link on a node will make the node non-foldable, therefore it is best to combine `prefix prefix
with values_first_mode
.
mutable toc_specific_hyperlink : string option;
If provided, overrides hyperlink
as the prefix used for generating URIs pointing to anchors in logs.
mutable backend : [ `Text
| `Html of PrintBox_html.Config.t
| `Markdown of PrintBox_md.Config.t ];
If the content is `Text
, logs are generated as monospaced text; for other settings as html or markdown.
mutable boxify_sexp_from_size : int;
If positive, Sexp.t
-based logs with this many or more atoms are converted to print-boxes before logging. Disabled by default (i.e. negative).
mutable highlight_terms : Re.re option;
Uses a highlight style for logs on paths ending with a log matching the regular expression.
*)mutable exclude_on_path : Re.re option;
Does not propagate the highlight status from child logs through log headers matching the given regular expression.
*)mutable prune_upto : int;
At depths lower than prune_upto
(or equal if counting from 1) only ouptputs highlighted boxes. This makes it simpler to trim excessive logging while still providing some context. Defaults to 0
-- no pruning.
mutable truncate_children : int;
If > 0, only the given number of the most recent children is kept at each node. Defaults to 0
-- keep all (no pruning).
mutable values_first_mode : bool;
If set to true, does not put the source code location of a computation as a header of its subtree. Rather, puts the result of the computation as the header of a computation subtree, if rendered as a single line -- or just the name, and puts the result near the top. If false, puts the result at the end of the computation subtree, i.e. preserves the order of the computation.
*)mutable max_inline_sexp_size : int;
Maximal size (in atoms) up to which a sexp value can be inlined during "boxification".
*)mutable max_inline_sexp_length : int;
Maximal length (in characters/bytes) up to which a sexp value can be inlined during "boxification".
*)mutable snapshot_every_sec : float option;
If given, output a snapshot of the pending logs when at least the given time (in seconds) has passed since the previous output. This is only checked at calls to log values.
*)mutable sexp_unescape_strings : bool;
If true, when a value is a sexp atom or is decomposed into a sexp atom by boxification, it is not printed as a sexp, but the string of the atom is printed directly. Defaults to true
.
mutable with_toc_listing : bool;
If true, outputs non-collapsed trees of ToC entries in the Table of Contents files.
*)mutable toc_flame_graph : bool;
If true, outputs a minimalistic rendering of a flame graph in the Table of Contents files, with boxes positioned to reflect both the ToC entries hierarchy and elapsed times for the opening and closing of entries. Not supported in the `Text
backend.
mutable flame_graph_separation : int;
How many pixels a single box, for a log header, is expected to take in a flame graph. Defaults to 40
. Note: ideally the height of a flame tree should be calculated automatically, then this setting would disappear.
}
val config : config