summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkylo252 <[email protected]>2022-10-06 16:12:12 +0200
committerGitHub <[email protected]>2022-10-06 10:12:12 -0400
commit40e2d5a1715ab7cdb0c4b4d849f1628caadb6842 (patch)
treef16b217dd7a34edd04ed0dc9077469f5ece470cc
parent5a4c8e3eecbfb3ef785c2eb5d2010f50b9b5d5df (diff)
feat(logger): hot-reload logger level (#3159)
-rw-r--r--lua/lvim/config/init.lua2
-rw-r--r--lua/lvim/core/log.lua37
2 files changed, 21 insertions, 18 deletions
diff --git a/lua/lvim/config/init.lua b/lua/lvim/config/init.lua
index 483af50d..fae6c518 100644
--- a/lua/lvim/config/init.lua
+++ b/lua/lvim/config/init.lua
@@ -122,6 +122,8 @@ function M:load(config_path)
end
end
+ Log:set_level(lvim.log.level)
+
handle_deprecated_settings()
autocmds.define_autocmds(lvim.autocommands)
diff --git a/lua/lvim/core/log.lua b/lua/lvim/core/log.lua
index 5047ff4c..d88a659b 100644
--- a/lua/lvim/core/log.lua
+++ b/lua/lvim/core/log.lua
@@ -12,26 +12,23 @@ vim.tbl_add_reverse_lookup(Log.levels)
local notify_opts = {}
function Log:set_level(level)
- local logger_ok, _ = xpcall(function()
- local log_level = Log.levels[level:upper()]
- local structlog = require "structlog"
- if structlog then
- local logger = structlog.get_logger "lvim"
- for _, s in ipairs(logger.sinks) do
- s.level = log_level
- end
+ local logger_ok, logger = pcall(function()
+ return require("structlog").get_logger "lvim"
+ 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
end
- end, debug.traceback)
- if not logger_ok then
- Log:debug("Unable to set logger's level: " .. debug.traceback())
+ else
+ vim.notify_once("Unable to set logger's level to " .. level)
end
local packer_ok, _ = xpcall(function()
- package.loaded["packer.log"] = nil
- require("packer.log").new { level = lvim.log.level }
+ require("packer.log").cfg { log = { level = level } }
end, debug.traceback)
if not packer_ok then
- Log:debug("Unable to set packer's log level: " .. debug.traceback())
+ vim.notify_once("Unable to set packer's log level to " .. level)
end
end
@@ -91,7 +88,7 @@ function Log:init()
vim_log_level = vim_log_level + 1
end
- logger:log(vim_log_level, msg)
+ self:info(vim_log_level, msg)
end
end
@@ -159,11 +156,15 @@ end
---Retrieves the handle of the logger object
---@return table|nil logger handle if found
function Log:get_logger()
- if self.__handle then
- return self.__handle
+ local logger_ok, logger = pcall(function()
+ return require("structlog").get_logger "lvim"
+ end)
+ if logger_ok and logger then
+ return logger
end
- local logger = self:init()
+ logger = self:init()
+
if not logger then
return
end