Explorar o código

refactor(logger): adapt to new changes upstream (#3695)

Luc Sinet %!s(int64=2) %!d(string=hai) anos
pai
achega
e7d7aa9273
Modificáronse 2 ficheiros con 29 adicións e 44 borrados
  1. 28 43
      lua/lvim/core/log.lua
  2. 1 1
      snapshots/default.json

+ 28 - 43
lua/lvim/core/log.lua

@@ -10,6 +10,7 @@ Log.levels = {
 vim.tbl_add_reverse_lookup(Log.levels)
 
 local notify_opts = {}
+local log_notify_as_notification = false
 
 function Log:set_level(level)
   local logger_ok, logger = pcall(function()
@@ -17,8 +18,8 @@ function Log:set_level(level)
   end)
   local log_level = Log.levels[level:upper()]
   if logger_ok and logger and log_level then
-    for _, s in ipairs(logger.sinks) do
-      s.level = log_level
+    for _, pipeline in ipairs(logger.pipelines) do
+      pipeline.level = log_level
     end
   end
 end
@@ -30,13 +31,12 @@ function Log:init()
   end
 
   local log_level = Log.levels[(lvim.log.level):upper() or "WARN"]
-  local lvim_log = {
+  structlog.configure {
     lvim = {
-      sinks = {
-        structlog.sinks.Console(log_level, {
-          async = false,
+      pipelines = {
+        {
+          level = log_level,
           processors = {
-            structlog.processors.Namer(),
             structlog.processors.StackWriter({ "line", "file" }, { max_parents = 0, stack_level = 2 }),
             structlog.processors.Timestamper "%H:%M:%S",
           },
@@ -45,10 +45,11 @@ function Log:init()
             { "timestamp", "level", "logger_name", "msg" },
             { level = structlog.formatters.FormatColorizer.color_level() }
           ),
-        }),
-        structlog.sinks.File(log_level, self:get_path(), {
+          sink = structlog.sinks.Console(false), -- async=false
+        },
+        {
+          level = log_level,
           processors = {
-            structlog.processors.Namer(),
             structlog.processors.StackWriter({ "line", "file" }, { max_parents = 3, stack_level = 2 }),
             structlog.processors.Timestamper "%F %H:%M:%S",
           },
@@ -56,13 +57,12 @@ function Log:init()
             "%s [%-5s] %s: %-30s",
             { "timestamp", "level", "logger_name", "msg" }
           ),
-        }),
+          sink = structlog.sinks.File(self:get_path()),
+        },
       },
     },
   }
 
-  lvim_log.lvim.sinks[1].async = false -- HACK: Bug in structlog prevents setting async to false
-  structlog.configure(lvim_log)
   local logger = structlog.get_logger "lvim"
 
   -- Overwrite `vim.notify` to use the logger
@@ -88,49 +88,34 @@ function Log:init()
 end
 
 --- Configure the sink in charge of logging notifications
----@param notif_handle table The implementation used by the sink for displaying the notifications
-function Log:configure_notifications(notif_handle)
+---@param nvim_notify table The nvim-notify instance
+function Log:configure_notifications(nvim_notify)
   local status_ok, structlog = pcall(require, "structlog")
   if not status_ok then
     return
   end
 
-  local default_namer = function(logger, entry)
-    entry["title"] = logger.name
-    return entry
-  end
+  local function log_writer(log)
+    local opts = { title = log.logger_name }
+    opts = vim.tbl_deep_extend("force", opts, notify_opts)
+    notify_opts = {}
 
-  local notify_opts_injecter = function(_, entry)
-    for key, value in pairs(notify_opts) do
-      entry[key] = value
+    if log_notify_as_notification then
+      nvim_notify(log.msg, log.level, opts)
     end
-    notify_opts = {}
-    return entry
   end
 
-  local sink = structlog.sinks.NvimNotify(Log.levels.INFO, {
-    processors = {
-      default_namer,
-      notify_opts_injecter,
-    },
-    formatter = structlog.formatters.Format( --
+  local notif_pipeline = structlog.Pipeline(
+    structlog.level.INFO,
+    {},
+    structlog.formatters.Format( --
       "%s",
       { "msg" },
       { blacklist_all = true }
     ),
-    -- This should probably not be hard-coded
-    params_map = {
-      icon = "icon",
-      keep = "keep",
-      on_open = "on_open",
-      on_close = "on_close",
-      timeout = "timeout",
-      title = "title",
-    },
-    impl = notif_handle,
-  })
-
-  table.insert(self.__handle.sinks, sink)
+    structlog.sinks.Adapter(log_writer)
+  )
+  self.__handle:add_pipeline(notif_pipeline)
 end
 
 --- Adds a log entry using Plenary.log

+ 1 - 1
snapshots/default.json

@@ -108,7 +108,7 @@
     "commit": "eee175f"
   },
   "structlog.nvim": {
-    "commit": "232a8e2"
+    "commit": "45b26a2"
   },
   "telescope-fzf-native.nvim": {
     "commit": "fab3e22"