From bff544ab89b83fc3d108dd1669d09861ed479891 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Sat, 12 Jul 2025 13:22:17 -0500 Subject: [PATCH] Add convenience methods for setting thresholds. --- namespaced_logging.nimble | 2 +- src/namespaced_logging.nim | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/namespaced_logging.nimble b/namespaced_logging.nimble index dd4e4dd..2c795e5 100644 --- a/namespaced_logging.nimble +++ b/namespaced_logging.nimble @@ -1,6 +1,6 @@ # Package -version = "2.0.2" +version = "2.0.3" author = "Jonathan Bernard" description = "Wrapper around std/logging to provide namespaced logging." license = "MIT" diff --git a/src/namespaced_logging.nim b/src/namespaced_logging.nim index 757e517..6584a4e 100644 --- a/src/namespaced_logging.nim +++ b/src/namespaced_logging.nim @@ -391,6 +391,17 @@ proc setThreshold*(ls: ThreadLocalLogService, scope: string, lvl: Level) {.gcsaf setThreshold(ls[], scope, lvl) +proc setThresholds*(ls: var LogService, thresholds: TableRef[string, Level]) {.gcsafe.} = + withLock ls.global.lock: + for k,v in thresholds: ls.global.thresholds[k] = v + ls.global.configVersion.atomicInc + + ensureFreshness(ls) + + +proc setThresholds*(ls: ThreadLocalLogService, thresholds: TableRef[string, Level]) {.gcsafe.} = + setThresholds(ls[], thresholds) + proc getLogger*( ls: ThreadLocalLogService, scope: string, @@ -425,6 +436,12 @@ proc getLogger*( else: none[Logger]() +proc appenders*(ls: var LogService): seq[LogAppender] {.gcsafe.} = + for a in ls.appenders: result.add(clone(a)) + +proc appenders*(ls: ThreadLocalLogService): seq[LogAppender] {.gcsafe.} = + ls[].appenders() + proc addAppender*(ls: var LogService, appender: LogAppender) {.gcsafe.} = ## Add a log appender to the global log service and refresh the local thread ## state. The updated global state will trigger other threads to refresh