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