package ppx_minidebug

  1. Overview
  2. Docs

The functors creating a Debug_runtime module that ppx_minidebug requires.

type elapsed_times =
  1. | Not_reported
  2. | Seconds
  3. | Milliseconds
  4. | Microseconds
  5. | Nanoseconds
type log_level =
  1. | Nothing
    (*

    Does not log anything.

    *)
  2. | Prefixed of string array
    (*

    Behaves as Nonempty_entries and additionally: only logs "leaf" values when the inspected string starts with one of the prefixes.

    *)
  3. | Prefixed_or_result of string array
    (*

    Behaves as Nonempty_entries and additionally: only logs "leaf" values when the inspected string starts with one of the prefixes, or the value is marked as a result. Doesn't output results of an entry if there are no non-result logs.

    *)
  4. | Nonempty_entries
    (*

    Does not log entries without children (treating results as children).

    *)
  5. | Everything
    (*

    Does not restrict logging.

    *)

The log levels, for both (in scope) compile time, and for the PrintBox runtime. When considered at compile time, inspecting strings requires string literals, at runtime it applies to all string values. Not logging at compile time means the corresponding loggingcode is not generated; not logging at runtime means the logging state is not updated.

module type Debug_ch = sig ... end
val debug_ch : ?time_tagged:bool -> ?elapsed_times:elapsed_times -> ?print_entry_ids:bool -> ?global_prefix:string -> ?split_files_after:int -> ?for_append:bool -> string -> (module Debug_ch)

Sets up a file with the given path, or if split_files_after is given, creates a directory to store the files. By default the logging will not be time tagged and will be appending to the file / creating more files. If split_files_after is given and for_append is false, clears the directory. If the opened file exceeds split_files_after characters, Debug_ch.refresh_ch () returns true; if in that case Debug_ch.debug_ch () is called, it will create and return a new file.

If elapsed_times is different from Not_reported, the elapsed time spans are printed for log subtrees, in the corresponding units with precision up to 1%. The times include printing out logs, therefore might not be reliable for profiling. In the runtime creation functions, elapsed_times defaults to Not_reported.

If print_entry_ids is true, the entry_id identifiers are printed on log headers with the syntax {#ID}; by default they are omitted.

If global_prefix is given, the log header messages (and the log closing messages for the flushing backend) are prefixed with it.

module type Debug_runtime = sig ... end

When using the ppx_minidebug syntax extension, provide a module called Debug_runtime with this signature in scope of the instrumented code.

The output is flushed line-at-a-time, so no output should be lost if the traced program crashes. The logged traces are still indented, but if the values to print are multi-line, their formatting might be messy. The indentation is also smaller (half of PrintBox).

val default_html_config : PrintBox_html.Config.t
val default_md_config : PrintBox_md.Config.t
module type PrintBox_runtime = sig ... end

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.

val debug_file : ?time_tagged:bool -> ?elapsed_times:elapsed_times -> ?print_entry_ids:bool -> ?global_prefix:string -> ?split_files_after:int -> ?highlight_terms:Re.t -> ?exclude_on_path:Re.t -> ?prune_upto:int -> ?truncate_children:int -> ?for_append:bool -> ?boxify_sexp_from_size:int -> ?max_inline_sexp_length:int -> ?backend: [ `Text | `Html of PrintBox_html.Config.t | `Markdown of PrintBox_md.Config.t ] -> ?hyperlink:string -> ?values_first_mode:bool -> ?log_level:log_level -> ?snapshot_every_sec:float -> string -> (module PrintBox_runtime)

Creates a PrintBox-based debug runtime configured to output html or markdown to a file with the given name suffixed with ".log", ".html" or ".md" depending on the backend. By default the logging will not be time tagged and the file will be created or erased by this function. The default boxify_sexp_from_size value is 50.

By default backend is `Markdown PrintBox.default_md_config. See PrintBox.config for details about PrintBox-specific parameters. See debug_ch for the details about shared parameters.

val debug : ?debug_ch:Stdlib.out_channel -> ?time_tagged:bool -> ?elapsed_times:elapsed_times -> ?print_entry_ids:bool -> ?global_prefix:string -> ?highlight_terms:Re.t -> ?exclude_on_path:Re.t -> ?prune_upto:int -> ?truncate_children:int -> ?values_first_mode:bool -> ?log_level:log_level -> ?snapshot_every_sec:float -> unit -> (module PrintBox_runtime)

Creates a PrintBox-based debug runtime for the `Text backend. By default it will log to stdout and will not be time tagged.

See PrintBox.config for details about PrintBox-specific parameters. See debug_ch for the details about shared parameters.

val debug_flushing : ?debug_ch:Stdlib.out_channel -> ?filename:string -> ?time_tagged:bool -> ?elapsed_times:elapsed_times -> ?print_entry_ids:bool -> ?global_prefix:string -> ?split_files_after:int -> ?for_append:bool -> unit -> (module Debug_runtime)

Creates a flushing-based debug runtime. By default it will log to stdout and will not be time tagged. At most one of debug_ch, filename can be provided. Adds the suffix ".log" to the file name if filename is given.

See debug_ch for the details about shared parameters.

val forget_printbox : (module PrintBox_runtime) -> (module Debug_runtime)

Upcasts the runtime.

val sexp_of_lazy_t : ('a -> Sexplib0.Sexp.t) -> 'a lazy_t -> Sexplib0.Sexp.t

Unlike Lazy.sexp_of_t available in the Base library, does not force the lazy value, only converts it if it's already computed and non-exception.

OCaml

Innovation. Community. Security.