diff options
| author | ThePrimeAgain <theprimeagain@theprimeagain.com> | 2025-12-26 15:25:30 -0700 |
|---|---|---|
| committer | ThePrimeAgain <theprimeagain@theprimeagain.com> | 2025-12-26 15:25:30 -0700 |
| commit | 6da68cdb8edea79f721479561ddc8d79e91981fe (patch) | |
| tree | e7e64edd62a76759ba891346a9b7bb3a3670d93d /lua/99/logger/logger.lua | |
| parent | 9f82332f402a51c17bb69ca5937d4ba7d8cf004a (diff) | |
| download | a4-6da68cdb8edea79f721479561ddc8d79e91981fe.tar.xz a4-6da68cdb8edea79f721479561ddc8d79e91981fe.zip | |
mid way through refactor when i realize i have another refactor
Diffstat (limited to 'lua/99/logger/logger.lua')
| -rw-r--r-- | lua/99/logger/logger.lua | 55 |
1 files changed, 49 insertions, 6 deletions
diff --git a/lua/99/logger/logger.lua b/lua/99/logger/logger.lua index 40848af..a56d908 100644 --- a/lua/99/logger/logger.lua +++ b/lua/99/logger/logger.lua @@ -50,6 +50,17 @@ end --- @class LoggerSink --- @field write_line fun(LoggerSink, string): nil +--- @class VoidLogger : LoggerSink +local VoidLogger = {} +VoidLogger.__index = VoidLogger + +function VoidLogger.new() + return setmetatable({}, VoidLogger) +end + +--- @param _ string +function VoidLogger:write_line(_) end + --- @class FileSink : LoggerSink --- @field fd number local FileSink = {} @@ -92,7 +103,7 @@ function PrintSink:write_line(str) print(str) end ---- @class Logger +--- @class _99.Logger --- @field level number --- @field sink LoggerSink --- @field print_on_error boolean @@ -101,6 +112,7 @@ end --- @field max_errors_cached number --- @field error_cache string[] --- @field error_cache_level number +--- @field extra_params string[] local Logger = {} Logger.__index = Logger @@ -108,7 +120,7 @@ Logger.__index = Logger function Logger:new(level) level = level or levels.FATAL return setmetatable({ - sink = PrintSink:new(), + sink = VoidLogger:new(), level = level, print_on_error = false, log_cache = {}, @@ -119,27 +131,58 @@ function Logger:new(level) }, self) end +function Logger:clone() + return setmetatable({ + sink = self.sink, + level = self.level, + print_on_error = self.print_on_error, + log_cache = {}, + error_cache = {}, + error_cache_level = self.error_cache_level, + max_errors_cached = self.max_errors_cached, + max_logs_cached = self.max_logs_cached, + }, Logger) +end + --- @param path string ---- @return Logger +--- @return _99.Logger function Logger:file_sink(path) self.sink = FileSink:new(path) return self end ---- @return Logger +--- @return _99.Logger function Logger:print_sink() self.sink = PrintSink:new() return self end +--- @param area string +--- @return _99.Logger +function Logger:set_area(area) + local new_logger = self:clone() + table.insert(new_logger.extra_params, "Area") + table.insert(new_logger.extra_params, area) + return new_logger +end + +--- @param xid number +--- @return _99.Logger +function Logger:set_id(xid) + local new_logger = self:clone() + table.insert(new_logger.extra_params, "id") + table.insert(new_logger.extra_params, xid) + return new_logger +end + --- @param level number ---- @return Logger +--- @return _99.Logger function Logger:set_level(level) self.level = level return self end ---- @return Logger +--- @return _99.Logger function Logger:on_error_print_message() self.print_on_error = true return self |
