mirror of
https://github.com/Doodle3D/doodle3d-firmware.git
synced 2024-12-22 19:13:49 +01:00
Loglite: add inheritance support for filter sets.
This commit is contained in:
parent
b27506d236
commit
332d185b50
@ -12,14 +12,14 @@ M.default = {
|
|||||||
|
|
||||||
-- filter rules for firmware log (/tmp/wifibox.log)
|
-- filter rules for firmware log (/tmp/wifibox.log)
|
||||||
M.firmware = {
|
M.firmware = {
|
||||||
['options'] = { ['mode'] = 'keep', count = 'none' },
|
['parent'] = 'default',
|
||||||
['patterns'] = {
|
['patterns'] = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
-- filter rules for print3d log (/tmp/print3d-*.log)
|
-- filter rules for print3d log (/tmp/print3d-*.log)
|
||||||
M.print3d = {
|
M.print3d = {
|
||||||
['options'] = { ['mode'] = 'keep', count = 'none' },
|
['parent'] = 'default',
|
||||||
['patterns'] = {
|
['patterns'] = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
#!/usr/bin/env lua
|
#!/usr/bin/env lua
|
||||||
|
|
||||||
|
-- EXAMPLE USAGE:
|
||||||
|
-- To be able to run print3d and at the same time color the logging you can use
|
||||||
|
-- the pipe (|) operator. Use 2>&1 to redirect the stderr to stdout, e.g.:
|
||||||
|
-- ./print3d -S -V -F -p marlin_generic 2>&1 | ./loglite.lua
|
||||||
|
--
|
||||||
-- Notes
|
-- Notes
|
||||||
-- * directives: either a color, a color prefixed by 'b' or one of: _delete, _nodelete, [_matchonly]
|
-- * directives: either a color, a color prefixed by 'b' or one of: _delete, _nodelete, [_matchonly]
|
||||||
-- * pattern rules are matched top to bottom, the last one encountered overriding any previous conflicting directive
|
-- * pattern rules are matched top to bottom, the last one encountered overriding any previous conflicting directive
|
||||||
--
|
--
|
||||||
-- EXAMPLE USAGE:
|
|
||||||
-- to be able to run print3d and at the same time color the logging you can use the pipe (|) operator.
|
|
||||||
-- use 2>&1 to redirect the stderr to stdout.
|
|
||||||
-- eg:
|
|
||||||
-- ./print3d -S -V -F -p marlin_generic 2>&1 | lua ./loglite.lua
|
|
||||||
--
|
|
||||||
-- TODO:
|
-- TODO:
|
||||||
-- * pre-split keyword lists for efficiency?
|
-- * pre-split keyword lists for efficiency?
|
||||||
-- * keep formats separate and only concat in the end, so things like uppercasing can work properly
|
-- * keep formats separate and only concat in the end, so things like uppercasing can work properly
|
||||||
@ -55,6 +54,7 @@ local RESET_CODE = ESCAPE_STR .. "m"
|
|||||||
local DFL_FILTERSET_FILE = "loglite-filters.lua"
|
local DFL_FILTERSET_FILE = "loglite-filters.lua"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--[[========================================================================]]--
|
--[[========================================================================]]--
|
||||||
|
|
||||||
--- Stringifies the given object.
|
--- Stringifies the given object.
|
||||||
@ -116,6 +116,26 @@ local function keysToString(tbl, sep, sort)
|
|||||||
return table.concat(keyset, sep)
|
return table.concat(keyset, sep)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Merge two tables recursively (i.e., subtables also get merged).
|
||||||
|
-- from: http://stackoverflow.com/a/1283608
|
||||||
|
-- @table t1 Table to merge into.
|
||||||
|
-- @table t2 Table to merge into t1.
|
||||||
|
-- @return The combined table (actually t1).
|
||||||
|
function mergeTables(t1, t2)
|
||||||
|
for k,v in pairs(t2) do
|
||||||
|
if type(v) == "table" then
|
||||||
|
if type(t1[k] or false) == "table" then
|
||||||
|
mergeTables(t1[k] or {}, t2[k] or {})
|
||||||
|
else
|
||||||
|
t1[k] = v
|
||||||
|
end
|
||||||
|
else
|
||||||
|
t1[k] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return t1
|
||||||
|
end
|
||||||
|
|
||||||
local function hasValue(t, needle)
|
local function hasValue(t, needle)
|
||||||
for k,v in pairs(t) do
|
for k,v in pairs(t) do
|
||||||
if needle == v then return k end
|
if needle == v then return k end
|
||||||
@ -201,6 +221,24 @@ local function readConfigFile(filename, searchPath)
|
|||||||
return dofile(fullPath)
|
return dofile(fullPath)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Load filter set with given name from configSets, with inheritance as specified.
|
||||||
|
local function readFilterSet(configSets, setName)
|
||||||
|
local result = {}
|
||||||
|
for k,_ in pairs(configSets) do
|
||||||
|
if k == setName then
|
||||||
|
parent = configSets[setName]['parent']
|
||||||
|
if parent ~= nil then
|
||||||
|
--print("[DEBUG] recursing for filter set '" .. parent .. "' from config")
|
||||||
|
result = mergeTables(result, readFilterSet(configSets, parent))
|
||||||
|
end
|
||||||
|
--print("[DEBUG] using/merging filter set '" .. setName .. "' from config")
|
||||||
|
result = mergeTables(result, configSets[setName])
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
--NOTE: if command-line options get any more complex, switch to a lightweight
|
--NOTE: if command-line options get any more complex, switch to a lightweight
|
||||||
-- getopt like this one? https://attractivechaos.wordpress.com/2011/04/07/getopt-for-lua/
|
-- getopt like this one? https://attractivechaos.wordpress.com/2011/04/07/getopt-for-lua/
|
||||||
local function main()
|
local function main()
|
||||||
@ -214,15 +252,9 @@ local function main()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- read filter set file if available
|
-- read filter set file if available
|
||||||
local filterSet = nil
|
local configSets = readConfigFile(DFL_FILTERSET_FILE, os.getenv('HOME')) or {}
|
||||||
configSets = readConfigFile(DFL_FILTERSET_FILE, os.getenv('HOME')) or {}
|
local filterSet = readFilterSet(configSets, filterSetName)
|
||||||
for k,_ in pairs(configSets) do
|
--print("[DEBUG] final filter set for '" .. filterSetName .. "' from config: " .. dump(filterSet))
|
||||||
if k == filterSetName then
|
|
||||||
filterSet = configSets[filterSetName]
|
|
||||||
--print("[DEBUG] using filter set '" .. filterSetName .. "' from config")
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- if requested, display help and exit
|
-- if requested, display help and exit
|
||||||
if showHelp and showHelp == true then
|
if showHelp and showHelp == true then
|
||||||
|
Loading…
Reference in New Issue
Block a user