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
|