Netlog
Basic logging facility
The purpose of this module is to define a mutable logging function which ensures to be always pointing to a valid logging implementation. By default, the function prints the messages to stderr, prepended by a timestamp. In Netplex context, the implementation is changed so that the Netplex logger is used instead (see Netplex_log
), and the log
and logf
functions below have the same effect as the counterparts in Netplex_cenv
with the same name.
The log levels (syslog-like)
type logger = level -> string -> unit
A logging function takes a level, and the message
channel_logger ch lev
: Prints all messages with a level of lev
and higher to the channel ch
. The output buffer is flushed after each message,
val current_logger : logger Stdlib.ref
The variable containing the current logger function. Defaults to channel_logger stderr `Debug
at program startup. Assign something else to this variable in order to change the log destination or the log level.
Note that the function Netplex_main.run
modifies current_logger
so log messages are forwarded to the Netplex logger. It is then the Netplex framework that determines log destination and level.
val log : level -> string -> unit
Writes a log message
val logf : level -> ('a, unit, string, unit) Stdlib.format4 -> 'a
Writes a log message like printf
val level_weight : level -> int
A number correspondig to the level
val level_of_string : string -> level
val string_of_level : level -> string
Convert level names to strings and vice versa
val format_timestamp : format -> int -> (float * int) -> string
format_timestamp fmt digits (seconds,nanos)
: Formats the timestamp (seconds,nanos)
and returns the string. Pass in digits
the number of digits for fractional seconds.
`Std
: This is the "%c" format of Netdate
`ISO
: ISO-8601 formatThe current timestamp formatter
Example: Change the format of timestamps to ISO with a precision of milliseconds:
Netlog.current_formatter := Netlog.format_timestamp `ISO 3
module Debug : sig ... end
Controlling messages for debugging Ocamlnet