26 lines
723 B
Nim
26 lines
723 B
Nim
|
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
|