New QueueLogger logging implementation.

This commit is contained in:
Jonathan Bernard 2023-07-04 09:08:15 -05:00
parent 0a49618ab3
commit 30c5720ab8
3 changed files with 29 additions and 2 deletions

View File

@ -1,13 +1,15 @@
import nre, terminal, strtabs, tables, unicode
import std/[nre, terminal, strtabs, tables, unicode]
import strutils except toUpper, toLower
import ./cliutils/config
import ./cliutils/daemonize
import ./cliutils/procutil
import ./cliutils/queue_logger
export config
export daemonize
export procutil
export queue_logger
type
TermColor = ForegroundColor or BackgroundColor

View File

@ -1,6 +1,6 @@
# Package
version = "0.8.2"
version = "0.9.0"
author = "Jonathan Bernard"
description = "Helper functions for writing command line interfaces."
license = "MIT"

25
cliutils/queue_logger.nim Normal file
View 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