# Module Batteries.Incubator.Log

    module Log: BatLog

    val output : unit BatIO.output Pervasives.ref

This ref holds the output channel for simple logging. Defaults to `stderr`
Since 2.0; had getter and setter in 1.x

    val prefix : string Pervasives.ref

This ref holds the text printed before each log message. Defaults to the empty string.
Since 2.0; had getter and setter in 1.x

    type flag = [ `Custom of unit -> string | `Date | `Filepos | `Time ]

    val flags : flag list Pervasives.ref

This ref holds the output flags. These flags control how the log messages are output. The default is ``Date; `Time` and log messages are printed as:

2011/0628 01:23:45: prefixmessage
Since 2.0; had getter and setter in 1.x

    val log : ?fp:string -> string -> unit

`log s` logs the message s, returning unit.
Since 2.0; was [print] in 1.x

    val logf : ?fp:string -> ('a, unit BatIO.output, unit) Pervasives.format -> 'a

As `Printf.printf`, only the message is printed to the logging output and prefixed with status information per the current flags and the currently set prefix.
Since 2.0; was [printf] in 1.x

    val fatal : ?fp:string -> string -> 'a

`fatal s` logs the message `s` and then calls `exit 1`. This exits the program with return code 1.

    val fatalf : ?fp:string -> ('a, unit BatIO.output, unit) Pervasives.format -> 'a

`fatalf` allows a format string (as `Printf.printf`)and the arguments to that format string to build the logging message. Exits the program with return code 1.

    module type Config = sig .. end

    module Make: functor (S : Config) -> sig .. end

Build a logger module with custom, fixed output, prefix and flags
Returns an object with methods `fatal`, `fatalf`, `log`, and `logf` that logs to the given output channel, with given prefix and flags. These methods work like the corresponding functions in the BatLog module.

    val make_logger : 'a BatIO.output ->
           string ->
           [< `Custom of unit -> string | `Date | `Filepos | `Time ] list ->
           < fatal : ?fp:string -> string -> 'b;
             fatalf : ?fp:string ->
                      ('c, 'a BatIO.output, unit, unit, unit, 'd) Pervasives.format6 ->
                      'c;
             log : ?fp:string -> string -> unit;
             logf : ?fp:string -> ('e, 'a BatIO.output, unit) Pervasives.format -> 'e >

    type easy_lev = [ `always | `debug | `error | `fatal | `info | `trace | `warn ]

The different verbosity levels supported in the `Easy` logger

    module Easy: sig .. end

A simple-to-use logger with verbosity levels that outputs by default to stderr (changeable at runtime) with the date and time at the beginning of each log message.

    module type Level_sig = sig .. end

The details of a level scheme for verbosity-level loggers

    module Make_lev: functor (L : Level_sig) -> functor (S : Config) -> sig .. end

Make your own level-based logger, like `Easy`