From 28c80a4ca57c38e69c6a290187d56f8d0fc0c3bf Mon Sep 17 00:00:00 2001 From: fechan Date: Mon, 6 May 2024 19:20:24 -0700 Subject: [PATCH] add logging module --- .gitignore | 3 +- computercraft/installer.lua | 1 + computercraft/sigils.lua | 3 ++ computercraft/sigils/logging.lua | 38 ++++++++++++++++++++ computercraft/sigils/pipe.lua | 3 +- computercraft/sigils/sigils-config.dist.json | 2 +- 6 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 computercraft/sigils/logging.lua diff --git a/.gitignore b/.gitignore index d5b4e53..01d34bf 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ factory.json node_modules/ build/ .env -sigils-config.json \ No newline at end of file +sigils-config.json +sigils-log.txt \ No newline at end of file diff --git a/computercraft/installer.lua b/computercraft/installer.lua index 41278d8..54b35d2 100644 --- a/computercraft/installer.lua +++ b/computercraft/installer.lua @@ -5,6 +5,7 @@ local files = { 'sigils/controller.lua', 'sigils/factory.lua', 'sigils/filter.lua', + 'sigils/logger.lua', 'sigils/machine.lua', 'sigils/pipe.lua', 'sigils/transfer-calculator.lua', diff --git a/computercraft/sigils.lua b/computercraft/sigils.lua index 4fac33d..80d5f00 100644 --- a/computercraft/sigils.lua +++ b/computercraft/sigils.lua @@ -3,6 +3,7 @@ local Factory = require('sigils.factory') local Pipe = require('sigils.pipe') local WebSocket = require('sigils.websocket') local Utils = require('sigils.utils') +local Logging = require('sigils.logging') local DEFAULT_SERVER_URL = 'wss://sigils.fredchan.org' @@ -50,6 +51,8 @@ local function init () local factory local config = getConfig() + Logging.LOGGER:setLevel(config.logLevel or 1) + Logging.LOGGER:warn("test") -- if there's no existing json file, generate a factory from detected peripherals if factoryJsonFile == nil then diff --git a/computercraft/sigils/logging.lua b/computercraft/sigils/logging.lua new file mode 100644 index 0000000..79010fb --- /dev/null +++ b/computercraft/sigils/logging.lua @@ -0,0 +1,38 @@ +local Utils = require('sigils.utils') + +local f = fs.open(Utils.absolutePathTo('sigils-log.txt'), 'w') +f.close() + +local LEVELS = { + DEBUG = 4, + INFO = 3, + WARN = 2, + ERROR = 1, + FATAL = 0, +} + +local LOGGER = { + level = 1, +} + +function LOGGER:writeLogLine(text) + local f = fs.open(Utils.absolutePathTo('sigils-log.txt'), 'a') + f.write(os.epoch('utc') .. " " .. text .. "\n") + f.close() +end + +function LOGGER:setLevel (newLevel) + self.level = newLevel +end + +function LOGGER:warn (text) + if self.level >= LEVELS.WARN then + print(text) + self:writeLogLine(text) + end +end + +return { + LOGGER = LOGGER, + LEVELS = LEVELS, +} \ No newline at end of file diff --git a/computercraft/sigils/pipe.lua b/computercraft/sigils/pipe.lua index c56ea6f..97ab91f 100644 --- a/computercraft/sigils/pipe.lua +++ b/computercraft/sigils/pipe.lua @@ -6,6 +6,7 @@ local TransferCalculator = require('sigils.transfer-calculator') local Filter = require('sigils.filter') +local LOGGER = require('sigils.logging').LOGGER local function processPipe (pipe, groupMap) local filter = Filter.getFilterFn(pipe.filter) @@ -28,7 +29,7 @@ local function processPipe (pipe, groupMap) end parallel.waitForAll(unpack(coros)) else - print('caught err', transferOrders) + LOGGER:warn("pipe.lua#processPipe() caught error " .. transferOrders) end end diff --git a/computercraft/sigils/sigils-config.dist.json b/computercraft/sigils/sigils-config.dist.json index 050b225..1c066ba 100644 --- a/computercraft/sigils/sigils-config.dist.json +++ b/computercraft/sigils/sigils-config.dist.json @@ -1,4 +1,4 @@ { "server": "wss://sigils.fredchan.org", - "verbose": false + "logLevel": 1 } \ No newline at end of file