Easy logging yojsonThis package provides the same features as Easy_logging
, but is extended with configuration loader from the json format, using ppx_deriving_yojson
as a deserializer.
Logging modules created by MakeLogging
are enriched with the three following functions to instantiate loggers and allow easy external configuration :
val load_config : Yojson.Safe.json -> unit
val load_config_str : string -> unit
val load_config_file : string -> unit
Configuration example{
"handlers": {
"file_handlers": {
"logs_folder" : "logs",
"truncate" : false
}
},
"loggers":
[
{
"name": "Main",
"level": "debug",
"handlers": [ {"cli": {"level" : "debug"}} ] },
{
"name": "Main.A",
"level": "info"},
{
"name": "Main.B",
"level": "warning"},
{
"name": "Main.C",
"level": "debug",
"propagate" : false,
"handlers": [{ "file": {"filename": "main.c.logs",
"level" : "info"}}
] }
]
} Configuration types Top configurationtype config = {
handlers : H.config; [@default H.default_config]
loggers : config_logger list
}
Logger configurationtype config_logger = {
name: string;
level : log_level; [@default NoLevel]
handlers : H.desc list; [@default [] ]
propagate : bool; [@default true]
}
Default handlers configurationtype config_ = {file_handlers: file_handlers_config}
type file_handlers_config_ =
{ logs_folder: string; [@default file_handlers_defaults.logs_folder]
truncate: bool; [@default file_handlers_defaults.truncate]
file_perms: int [@default file_handlers_defaults.file_perms]
}
type cli_json_params = {level : log_level}
type cli_json_desc = {cli : cli_json_params}
type file_json_desc_params = {filename : string;level: log_level}
type file_json_desc = {file : file_json_desc_params}
ReferenceEasy_logging_yojson