Shell: Improve Logging
This commit is contained in:
parent
866e7add2f
commit
31872eb1b1
@ -411,7 +411,7 @@ let init_logger { log_output ; log_level } =
|
|||||||
| `Stderr -> Logging.init Stderr
|
| `Stderr -> Logging.init Stderr
|
||||||
| `File fp -> Logging.init (File fp)
|
| `File fp -> Logging.init (File fp)
|
||||||
| `Null -> Logging.init Null
|
| `Null -> Logging.init Null
|
||||||
| `Syslog -> Logging.init Syslog
|
| `Syslog -> Logging.init (Syslog `Local1)
|
||||||
|
|
||||||
let init_node
|
let init_node
|
||||||
{ sandbox ; sandbox_param ;
|
{ sandbox ; sandbox_param ;
|
||||||
@ -533,7 +533,7 @@ let init_signal () =
|
|||||||
let main cfg =
|
let main cfg =
|
||||||
Random.self_init () ;
|
Random.self_init () ;
|
||||||
Sodium.Random.stir () ;
|
Sodium.Random.stir () ;
|
||||||
init_logger cfg;
|
init_logger cfg >>= fun () ->
|
||||||
Updater.init cfg.protocol;
|
Updater.init cfg.protocol;
|
||||||
lwt_log_notice "Starting the Tezos node..." >>= fun () ->
|
lwt_log_notice "Starting the Tezos node..." >>= fun () ->
|
||||||
init_node cfg >>=? fun node ->
|
init_node cfg >>=? fun node ->
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
(* *)
|
(* *)
|
||||||
(**************************************************************************)
|
(**************************************************************************)
|
||||||
|
|
||||||
|
open Lwt.Infix
|
||||||
|
|
||||||
module type LOG = sig
|
module type LOG = sig
|
||||||
|
|
||||||
val debug: ('a, Format.formatter, unit, unit) format4 -> 'a
|
val debug: ('a, Format.formatter, unit, unit) format4 -> 'a
|
||||||
@ -86,32 +88,134 @@ module Client = struct
|
|||||||
end
|
end
|
||||||
module Webclient = Make(struct let name = "webclient" end)
|
module Webclient = Make(struct let name = "webclient" end)
|
||||||
|
|
||||||
let template = "$(date) $(name)[$(pid)]: $(message)"
|
type template = Lwt_log.template
|
||||||
|
let default_template = "$(date) - $(section): $(message)"
|
||||||
let default_logger () =
|
|
||||||
Lwt_log.channel ~template ~close_mode:`Keep ~channel:Lwt_io.stderr ()
|
|
||||||
|
|
||||||
type kind =
|
type kind =
|
||||||
| Null
|
| Null
|
||||||
| Stdout
|
| Stdout
|
||||||
| Stderr
|
| Stderr
|
||||||
| File of string
|
| File of string
|
||||||
| Syslog
|
| Syslog of Lwt_log.syslog_facility
|
||||||
| Manual of Lwt_log.logger
|
|
||||||
|
|
||||||
let init kind =
|
let kind_encoding =
|
||||||
let logger =
|
let open Data_encoding in
|
||||||
|
conv
|
||||||
|
(function
|
||||||
|
| Null -> "/dev/null"
|
||||||
|
| Stdout -> "stdout"
|
||||||
|
| Stderr -> "stderr"
|
||||||
|
| File fp -> fp
|
||||||
|
| Syslog `Auth -> "syslog:auth"
|
||||||
|
| Syslog `Authpriv -> "syslog:authpriv"
|
||||||
|
| Syslog `Cron -> "syslog:cron"
|
||||||
|
| Syslog `Daemon -> "syslog:daemon"
|
||||||
|
| Syslog `FTP -> "syslog:ftp"
|
||||||
|
| Syslog `Kernel -> "syslog:kernel"
|
||||||
|
| Syslog `Local0 -> "syslog:local0"
|
||||||
|
| Syslog `Local1 -> "syslog:local1"
|
||||||
|
| Syslog `Local2 -> "syslog:local2"
|
||||||
|
| Syslog `Local3 -> "syslog:local3"
|
||||||
|
| Syslog `Local4 -> "syslog:local4"
|
||||||
|
| Syslog `Local5 -> "syslog:local5"
|
||||||
|
| Syslog `Local6 -> "syslog:local6"
|
||||||
|
| Syslog `Local7 -> "syslog:local7"
|
||||||
|
| Syslog `LPR -> "syslog:lpr"
|
||||||
|
| Syslog `Mail -> "syslog:mail"
|
||||||
|
| Syslog `News -> "syslog:news"
|
||||||
|
| Syslog `Syslog -> "syslog:syslog"
|
||||||
|
| Syslog `User -> "syslog:user"
|
||||||
|
| Syslog `UUCP -> "syslog:uucp"
|
||||||
|
| Syslog `NTP -> "syslog:ntp"
|
||||||
|
| Syslog `Security -> "syslog:security"
|
||||||
|
| Syslog `Console -> "syslog:console")
|
||||||
|
(function
|
||||||
|
| "/dev/null" | "null" -> Null
|
||||||
|
| "stdout" -> Stdout
|
||||||
|
| "stderr" -> Stderr
|
||||||
|
| "syslog:auth" -> Syslog `Auth
|
||||||
|
| "syslog:authpriv" -> Syslog `Authpriv
|
||||||
|
| "syslog:cron" -> Syslog `Cron
|
||||||
|
| "syslog:daemon" -> Syslog `Daemon
|
||||||
|
| "syslog:ftp" -> Syslog `FTP
|
||||||
|
| "syslog:kernel" -> Syslog `Kernel
|
||||||
|
| "syslog:local0" -> Syslog `Local0
|
||||||
|
| "syslog:local1" -> Syslog `Local1
|
||||||
|
| "syslog:local2" -> Syslog `Local2
|
||||||
|
| "syslog:local3" -> Syslog `Local3
|
||||||
|
| "syslog:local4" -> Syslog `Local4
|
||||||
|
| "syslog:local5" -> Syslog `Local5
|
||||||
|
| "syslog:local6" -> Syslog `Local6
|
||||||
|
| "syslog:local7" -> Syslog `Local7
|
||||||
|
| "syslog:lpr" -> Syslog `LPR
|
||||||
|
| "syslog:mail" -> Syslog `Mail
|
||||||
|
| "syslog:news" -> Syslog `News
|
||||||
|
| "syslog:syslog" -> Syslog `Syslog
|
||||||
|
| "syslog:user" -> Syslog `User
|
||||||
|
| "syslog:uucp" -> Syslog `UUCP
|
||||||
|
| "syslog:ntp" -> Syslog `NTP
|
||||||
|
| "syslog:security" -> Syslog `Security
|
||||||
|
| "syslog:console" -> Syslog `Console
|
||||||
|
(* | s when start_with "syslog:" FIXME error or warning. *)
|
||||||
|
| fp ->
|
||||||
|
(* TODO check absolute path *)
|
||||||
|
File fp)
|
||||||
|
string
|
||||||
|
|
||||||
|
|
||||||
|
let init ?(template = default_template) kind =
|
||||||
|
begin
|
||||||
match kind with
|
match kind with
|
||||||
| Stderr ->
|
| Stderr ->
|
||||||
default_logger ()
|
Lwt.return @@
|
||||||
|
Lwt_log.channel ~template ~close_mode:`Keep ~channel:Lwt_io.stderr ()
|
||||||
| Stdout ->
|
| Stdout ->
|
||||||
|
Lwt.return @@
|
||||||
Lwt_log.channel ~template ~close_mode:`Keep ~channel:Lwt_io.stdout ()
|
Lwt_log.channel ~template ~close_mode:`Keep ~channel:Lwt_io.stdout ()
|
||||||
| File file_name ->
|
| File file_name ->
|
||||||
Lwt_main.run (Lwt_log.file ~file_name ~template ())
|
Lwt_log.file ~file_name ~template ()
|
||||||
| Null ->
|
| Null ->
|
||||||
|
Lwt.return @@
|
||||||
Lwt_log.null
|
Lwt_log.null
|
||||||
| Syslog ->
|
| Syslog facility ->
|
||||||
Printf.eprintf "Warning: log_kind \"syslog\" not yet implemented.\n%!";
|
Lwt.return @@
|
||||||
default_logger ()
|
Lwt_log.syslog ~template ~facility ()
|
||||||
| Manual logger -> logger in
|
end >>= fun logger ->
|
||||||
Lwt_log.default := logger
|
Lwt_log.default := logger ;
|
||||||
|
Lwt.return_unit
|
||||||
|
|
||||||
|
type level = Lwt_log_core.level =
|
||||||
|
| Debug
|
||||||
|
(** Debugging message. They can be automatically removed by the
|
||||||
|
syntax extension. *)
|
||||||
|
| Info
|
||||||
|
(** Informational message. Suitable to be displayed when the
|
||||||
|
program is in verbose mode. *)
|
||||||
|
| Notice
|
||||||
|
(** Same as {!Info}, but is displayed by default. *)
|
||||||
|
| Warning
|
||||||
|
(** Something strange happend *)
|
||||||
|
| Error
|
||||||
|
(** An error message, which should not means the end of the
|
||||||
|
program. *)
|
||||||
|
| Fatal
|
||||||
|
|
||||||
|
let level_encoding =
|
||||||
|
let open Data_encoding in
|
||||||
|
conv
|
||||||
|
(function
|
||||||
|
| Fatal -> "fatal"
|
||||||
|
| Error -> "error"
|
||||||
|
| Warning -> "warning"
|
||||||
|
| Notice -> "notice"
|
||||||
|
| Info -> "info"
|
||||||
|
| Debug -> "debug")
|
||||||
|
(function
|
||||||
|
| "error" -> Error
|
||||||
|
| "warn" -> Warning
|
||||||
|
| "notice" -> Notice
|
||||||
|
| "info" -> Info
|
||||||
|
| "debug" -> Debug
|
||||||
|
| "fatal" -> Fatal
|
||||||
|
| _ -> invalid_arg "Logging.level")
|
||||||
|
string
|
||||||
|
@ -48,12 +48,34 @@ module Webclient : LOG
|
|||||||
|
|
||||||
module Make(S: sig val name: string end) : LOG
|
module Make(S: sig val name: string end) : LOG
|
||||||
|
|
||||||
|
type level = Lwt_log_core.level =
|
||||||
|
| Debug
|
||||||
|
(** Debugging message. They can be automatically removed by the
|
||||||
|
syntax extension. *)
|
||||||
|
| Info
|
||||||
|
(** Informational message. Suitable to be displayed when the
|
||||||
|
program is in verbose mode. *)
|
||||||
|
| Notice
|
||||||
|
(** Same as {!Info}, but is displayed by default. *)
|
||||||
|
| Warning
|
||||||
|
(** Something strange happend *)
|
||||||
|
| Error
|
||||||
|
(** An error message, which should not means the end of the
|
||||||
|
program. *)
|
||||||
|
| Fatal
|
||||||
|
|
||||||
|
type template = Lwt_log.template
|
||||||
|
val default_template : template
|
||||||
|
|
||||||
|
val level_encoding : level Data_encoding.t
|
||||||
|
|
||||||
type kind =
|
type kind =
|
||||||
| Null
|
| Null
|
||||||
| Stdout
|
| Stdout
|
||||||
| Stderr
|
| Stderr
|
||||||
| File of string
|
| File of string
|
||||||
| Syslog
|
| Syslog of Lwt_log.syslog_facility
|
||||||
| Manual of Lwt_log.logger
|
|
||||||
|
|
||||||
val init: kind -> unit
|
val kind_encoding : kind Data_encoding.t
|
||||||
|
|
||||||
|
val init: ?template:template -> kind -> unit Lwt.t
|
||||||
|
@ -19,11 +19,8 @@ let detach ?(prefix = "") f =
|
|||||||
| 0 ->
|
| 0 ->
|
||||||
Random.self_init () ;
|
Random.self_init () ;
|
||||||
let template = Format.asprintf "%s$(section): $(message)" prefix in
|
let template = Format.asprintf "%s$(section): $(message)" prefix in
|
||||||
let logger =
|
|
||||||
Lwt_log.channel
|
|
||||||
~template ~close_mode:`Keep ~channel:Lwt_io.stderr () in
|
|
||||||
Logging.init (Manual logger) ;
|
|
||||||
Lwt_main.run begin
|
Lwt_main.run begin
|
||||||
|
Logging.init ~template Stderr >>= fun () ->
|
||||||
lwt_log_notice "PID: %d" (Unix.getpid ()) >>= fun () ->
|
lwt_log_notice "PID: %d" (Unix.getpid ()) >>= fun () ->
|
||||||
f ()
|
f ()
|
||||||
end ;
|
end ;
|
||||||
|
@ -182,6 +182,7 @@ let spec = Arg.[
|
|||||||
|
|
||||||
let main () =
|
let main () =
|
||||||
let open Utils in
|
let open Utils in
|
||||||
|
Logging.init Stderr >>= fun () ->
|
||||||
let anon_fun num_peers = raise (Arg.Bad "No anonymous argument.") in
|
let anon_fun num_peers = raise (Arg.Bad "No anonymous argument.") in
|
||||||
let usage_msg = "Usage: %s <num_peers>.\nArguments are:" in
|
let usage_msg = "Usage: %s <num_peers>.\nArguments are:" in
|
||||||
Arg.parse spec anon_fun usage_msg ;
|
Arg.parse spec anon_fun usage_msg ;
|
||||||
@ -191,7 +192,5 @@ let main () =
|
|||||||
|
|
||||||
let () =
|
let () =
|
||||||
Sys.catch_break true ;
|
Sys.catch_break true ;
|
||||||
try
|
try Lwt_main.run @@ main ()
|
||||||
Logging.init Stderr ;
|
|
||||||
Lwt_main.run @@ main ()
|
|
||||||
with _ -> ()
|
with _ -> ()
|
||||||
|
@ -140,7 +140,7 @@ let run
|
|||||||
?max_download_speed ?max_upload_speed
|
?max_download_speed ?max_upload_speed
|
||||||
~read_buffer_size ?read_queue_size ?write_queue_size
|
~read_buffer_size ?read_queue_size ?write_queue_size
|
||||||
addr port time n =
|
addr port time n =
|
||||||
Logging.init Stderr ;
|
Logging.init Stderr >>= fun () ->
|
||||||
listen ?port addr >>= fun (main_socket, port) ->
|
listen ?port addr >>= fun (main_socket, port) ->
|
||||||
let server =
|
let server =
|
||||||
Process.detach ~prefix:"server " begin fun () ->
|
Process.detach ~prefix:"server " begin fun () ->
|
||||||
|
Loading…
Reference in New Issue
Block a user