mirror of
https://github.com/Insality/druid.git
synced 2025-11-26 10:50:52 +01:00
Add Druid logger
This commit is contained in:
@@ -2,6 +2,7 @@ local event = require("event.event")
|
|||||||
local events = require("event.events")
|
local events = require("event.events")
|
||||||
local settings = require("druid.system.settings")
|
local settings = require("druid.system.settings")
|
||||||
local druid_instance = require("druid.system.druid_instance")
|
local druid_instance = require("druid.system.druid_instance")
|
||||||
|
local logger = require("druid.system.druid_logger")
|
||||||
|
|
||||||
local default_style = require("druid.styles.default.style")
|
local default_style = require("druid.styles.default.style")
|
||||||
|
|
||||||
@@ -193,4 +194,25 @@ function M.unregister_druid_as_widget()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
---@param logger_instance druid.logger|table|nil
|
||||||
|
function M.set_logger(logger_instance)
|
||||||
|
logger.set_logger(logger_instance)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
---@param name string?
|
||||||
|
---@param level string|nil
|
||||||
|
---@return druid.logger
|
||||||
|
function M.get_logger(name, level)
|
||||||
|
if not name then
|
||||||
|
local current_script_path = debug.getinfo(3).short_src
|
||||||
|
local basename = string.match(current_script_path, "([^/\\]+)$")
|
||||||
|
basename = string.match(basename, "(.*)%..*$")
|
||||||
|
name = basename
|
||||||
|
end
|
||||||
|
|
||||||
|
return setmetatable({ name = name, level = level }, { __index = logger })
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|||||||
@@ -404,24 +404,44 @@ function M.is_multitouch_supported()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
---Simple table to one-line string converter
|
---Converts table to one-line string
|
||||||
---@param t table
|
---@param t table
|
||||||
---@return string
|
---@param depth number?
|
||||||
function M.table_to_string(t)
|
---@param result string|nil Internal parameter
|
||||||
if not t then
|
---@return string, boolean result String representation of table, Is max string length reached
|
||||||
return ""
|
function M.table_to_string(t, depth, result)
|
||||||
|
if type(t) ~= "table" then
|
||||||
|
return tostring(t) or "", false
|
||||||
end
|
end
|
||||||
|
|
||||||
local result = "{"
|
depth = depth or 0
|
||||||
|
result = result or "{"
|
||||||
|
|
||||||
for key, value in pairs(t) do
|
for key, value in pairs(t) do
|
||||||
if #result > 1 then
|
if #result > 1 then
|
||||||
result = result .. ", "
|
result = result .. ", "
|
||||||
end
|
end
|
||||||
result = result .. key .. ": " .. value
|
|
||||||
|
if type(value) == "table" then
|
||||||
|
if depth == 0 then
|
||||||
|
local table_len = 0
|
||||||
|
for _ in pairs(value) do
|
||||||
|
table_len = table_len + 1
|
||||||
|
end
|
||||||
|
result = result .. key .. ": {... #" .. table_len .. "}"
|
||||||
|
else
|
||||||
|
local convert_result, is_limit = M.table_to_string(value, depth - 1, "")
|
||||||
|
result = result .. key .. ": {" .. convert_result
|
||||||
|
if is_limit then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
result = result .. key .. ": " .. tostring(value)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return result .. "}"
|
return result .. "}", false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
39
druid/system/druid_logger.lua
Normal file
39
druid/system/druid_logger.lua
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
local helper = require("druid.helper")
|
||||||
|
|
||||||
|
---@class druid.logger
|
||||||
|
---@field trace fun(_, msg: string, data: any)
|
||||||
|
---@field debug fun(_, msg: string, data: any)
|
||||||
|
---@field info fun(_, msg: string, data: any)
|
||||||
|
---@field warn fun(_, msg: string, data: any)
|
||||||
|
---@field error fun(_, msg: string, data: any)
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
local EMPTY_FUNCTION = function(_, message, context) end
|
||||||
|
|
||||||
|
---@type druid.logger
|
||||||
|
local empty_logger = {
|
||||||
|
trace = EMPTY_FUNCTION,
|
||||||
|
debug = EMPTY_FUNCTION,
|
||||||
|
info = EMPTY_FUNCTION,
|
||||||
|
warn = EMPTY_FUNCTION,
|
||||||
|
error = EMPTY_FUNCTION,
|
||||||
|
}
|
||||||
|
|
||||||
|
---@type druid.logger
|
||||||
|
local default_logger = {
|
||||||
|
trace = function(_, msg, data) print("TRACE: " .. msg, helper.table_to_string(data)) end,
|
||||||
|
debug = function(_, msg, data) print("DEBUG: " .. msg, helper.table_to_string(data)) end,
|
||||||
|
info = function(_, msg, data) print("INFO: " .. msg, helper.table_to_string(data)) end,
|
||||||
|
warn = function(_, msg, data) print("WARN: " .. msg, helper.table_to_string(data)) end,
|
||||||
|
error = function(_, msg, data) print("ERROR: " .. msg, helper.table_to_string(data)) end
|
||||||
|
}
|
||||||
|
|
||||||
|
local METATABLE = { __index = default_logger }
|
||||||
|
|
||||||
|
---@param logger druid.logger|table|nil
|
||||||
|
function M.set_logger(logger)
|
||||||
|
METATABLE.__index = logger or empty_logger
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
return setmetatable(M, METATABLE)
|
||||||
Reference in New Issue
Block a user