package devkit

  1. Overview
  2. Docs

Global ready-to-use logger

TODO interface to manage State

Example usage

Create logging facility (messages origin)

let http = Log.facility "http"

Log from http subsystem at debug level

Log.debug http "received %u bytes"

Create and use object for http logging

let log = Log.from "http" (* new Log.logger http *);;
log#info "sent %u bytes" 1024
log#warn ~exn "failed here"

Output only messages of warning level or higher for the http facility

http#allow `Warn

or

Logger.set_filter http `Warn

or

Log.set_filter ~name:"http" `Warn

or

Log.set_filter ~name:"http*" `Warn

to set for all facilities starting with "http"

Output only messages of warning level or higher for all facilities

Log.set_filter `Warn

API

module State : sig ... end

Global logger state

include module type of struct include State.M end
val debug_s : Devkit_core__Logger.facil -> string -> unit
val info_s : Devkit_core__Logger.facil -> string -> unit
val warn_s : Devkit_core__Logger.facil -> string -> unit
val error_s : Devkit_core__Logger.facil -> string -> unit
val put_s : [ `Debug | `Info | `Warn | `Error ] -> Devkit_core__Logger.facil -> string -> unit
val debug : Devkit_core__Logger.facil -> ('a, unit, string, unit) format4 -> 'a
val info : Devkit_core__Logger.facil -> ('a, unit, string, unit) format4 -> 'a
val warn : Devkit_core__Logger.facil -> ('a, unit, string, unit) format4 -> 'a
val error : Devkit_core__Logger.facil -> ('a, unit, string, unit) format4 -> 'a
val facility : string -> Logger.facil
val set_filter : ?name:string -> Logger.level -> unit
val set_loglevels : string -> unit
val set_utc : unit -> unit
val read_env_config : ?env:string -> unit -> unit

Update facilities configuration from the environment.

By default, it reads the configuration in the environment variable DEVKIT_LOG which can be overwritten using the optional process_name parameter.

The value of environment variable should match the following grammar: ([<facil|prefix*>=]debug|info|warn|error[,])*

  • raises Failure

    on invalid level values of wrong format

type 'a pr = ?exn:exn -> ?lines:bool -> ?backtrace:bool -> ?saved_backtrace:string list -> ('a, unit, string, unit) format4 -> 'a

param lines: whether to split multiline message as separate log lines (default true)

param backtrace: whether to show backtrace (default is true if exn is given and backtrace recording is enabled)

param saved_backtrace: supply backtrace to show instead of using Printexc.get_backtrace

class logger : Logger.facil -> object ... end
val from : string -> logger
val self : logger

internal logging facility

val main : logger

general logging facility

val reopen : string option -> unit

reopen log file

val log_start : float ref
val cur_size : int ref