summaryrefslogtreecommitdiff
path: root/2025
diff options
context:
space:
mode:
authorDJ O'Leary <dijitol@proton.me>2025-12-05 01:50:42 +0100
committerDJ O'Leary <dijitol@proton.me>2025-12-05 01:50:42 +0100
commit58d165a4156336473a9f8bbe0f55823d0b973fc2 (patch)
tree47d6f3d611200a9b838c6d1b7cdbd72c2eab9220 /2025
parent88aa00426ab84062b74156649506c7f65233c9c8 (diff)
feat(logger): implement logger functor
still needs to be injected somehow
Diffstat (limited to '2025')
-rw-r--r--2025/ocaml/lib/application/logger.ml39
-rw-r--r--2025/ocaml/lib/infrastructure/log.ml32
2 files changed, 50 insertions, 21 deletions
diff --git a/2025/ocaml/lib/application/logger.ml b/2025/ocaml/lib/application/logger.ml
new file mode 100644
index 0000000..3d63201
--- /dev/null
+++ b/2025/ocaml/lib/application/logger.ml
@@ -0,0 +1,39 @@
+module type LoggerType = sig
+ type 'a t
+
+ val app : 'a t -> unit
+
+ val err : 'a t -> unit
+
+ val warn : 'a t -> unit
+
+ val info : 'a t -> unit
+
+ val debug : 'a t -> unit
+end
+
+module type S = sig
+ type 'a t
+
+ val app : 'a t -> unit
+
+ val err : 'a t -> unit
+
+ val warn : 'a t -> unit
+
+ val info : 'a t -> unit
+
+ val debug : 'a t -> unit
+end
+
+module Make (Logger : LoggerType) : S with type 'a t := 'a Logger.t = struct
+ let app = Logger.app
+
+ let err = Logger.err
+
+ let warn = Logger.warn
+
+ let info = Logger.info
+
+ let debug = Logger.debug
+end
diff --git a/2025/ocaml/lib/infrastructure/log.ml b/2025/ocaml/lib/infrastructure/log.ml
index 60f52b5..a15c1e7 100644
--- a/2025/ocaml/lib/infrastructure/log.ml
+++ b/2025/ocaml/lib/infrastructure/log.ml
@@ -1,25 +1,15 @@
-type level = App | Err | Warning | Info | Debug
+module LogsAdapter = struct
+ type 'a t = ('a, unit) Logs.msgf
-let log = function
- | App ->
- Logs.app
- | Err ->
- Logs.err
- | Warning ->
- Logs.warn
- | Info ->
- Logs.info
- | Debug ->
- Logs.debug
+ let app msgf = Logs.app msgf
-(** [pp_passthrough pp x] is [x] with the side-effects
- caused by calling [pp] on [x]. *)
-let pp_passthrough pp x = pp x ; x
+ let err msgf = Logs.err msgf
-(** [pp_list lvl msg lst] prints all elements of [lst] with the
- message [msg] at the level [lvl] *)
-let pp_list lvl msg = List.iter (fun elmt -> log lvl (fun m -> m msg elmt))
+ let warn msgf = Logs.warn msgf
-(** [pp_sequence lvl msg seq] prints all elements of [seq] with the
- message [msg] at the level [lvl] *)
-let pp_sequence lvl msg = Seq.iter (fun elmt -> log lvl (fun m -> m msg elmt))
+ let info msgf = Logs.info msgf
+
+ let debug msgf = Logs.debug msgf
+end
+
+module Logger = Application.Logger.Make (LogsAdapter)