package ppx_minidebug

  1. Overview
  2. Docs

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.

Parameters

module _ : Shared_config

Signature

include Debug_runtime
val close_log : fname:string -> start_lnum:int -> entry_id:int -> unit
val open_log : fname:string -> start_lnum:int -> start_colnum:int -> end_lnum:int -> end_colnum:int -> message:string -> entry_id:int -> log_level:int -> [ `Diagn | `Debug | `Track ] -> unit
val open_log_no_source : message:string -> entry_id:int -> log_level:int -> [ `Diagn | `Debug | `Track ] -> unit
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:(Stdlib.Format.formatter -> 'a -> unit) -> is_result:bool -> 'a -> unit
val log_value_show : ?descr:string -> entry_id:int -> log_level:int -> is_result:bool -> string -> unit
val log_value_printbox : entry_id:int -> log_level:int -> PrintBox.t -> unit
val exceeds_max_nesting : unit -> bool
val exceeds_max_children : unit -> bool
val get_entry_id : unit -> int
val max_nesting_depth : int option Stdlib.ref
val max_num_children : int option Stdlib.ref
val global_prefix : string
val snapshot : unit -> unit

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.

val description : string

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".

val no_debug_if : bool -> unit

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 Stdlib.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 = {
  1. 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.

    *)
  2. 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).

    *)
  3. mutable highlight_terms : Re.re option;
    (*

    Uses a highlight style for logs on paths ending with a log matching the regular expression.

    *)
  4. mutable exclude_on_path : Re.re option;
    (*

    Does not propagate the highlight status from child logs through log headers matching the given regular expression.

    *)
  5. 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.

    *)
  6. 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).

    *)
  7. 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.

    *)
  8. mutable max_inline_sexp_size : int;
    (*

    Maximal size (in atoms) up to which a sexp value can be inlined during "boxification".

    *)
  9. mutable max_inline_sexp_length : int;
    (*

    Maximal length (in characters/bytes) up to which a sexp value can be inlined during "boxification".

    *)
  10. 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.

    *)
  11. 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.

    *)
  12. mutable with_toc_listing : bool;
    (*

    If true, outputs non-collapsed trees of ToC entries in the Table of Contents files.

    *)
  13. 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.

    *)
  14. 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
OCaml

Innovation. Community. Security.