New QueueLogger logging implementation.
This commit is contained in:
25
cliutils/queue_logger.nim
Normal file
25
cliutils/queue_logger.nim
Normal file
@ -0,0 +1,25 @@
|
||||
import std/[logging]
|
||||
|
||||
type
|
||||
QueuedLogMessage* = tuple[lvl: Level, msg: string]
|
||||
|
||||
QueueLogger* = ref object of Logger
|
||||
queue: seq[QueuedLogMessage]
|
||||
|
||||
proc newQueueLogger*(
|
||||
levelThreshold = lvlAll,
|
||||
fmtStr = logging.defaultFmtStr): QueueLogger =
|
||||
|
||||
new result
|
||||
result.fmtStr = fmtStr
|
||||
result.levelThreshold = levelThreshold
|
||||
result.queue = newSeq[QueuedLogMessage]()
|
||||
|
||||
method log*(logger: QueueLogger, level: Level, args: varargs[string, `$`]) =
|
||||
if level >= logger.levelThreshold:
|
||||
logger.queue.add((level, substituteLog(logger.fmtStr, level, args)))
|
||||
|
||||
proc clearQueue*(logger: QueueLogger) =
|
||||
logger.queue = newSeq[QueuedLogMessage]()
|
||||
|
||||
func messages*(logger: QueueLogger): seq[QueuedLogMessage] = logger.queue
|
Reference in New Issue
Block a user