Swallow impossible exception.
This commit is contained in:
		| @@ -1,6 +1,6 @@ | |||||||
| # Package | # Package | ||||||
|  |  | ||||||
| version       = "0.3.1" | version       = "0.3.2" | ||||||
| author        = "Jonathan Bernard" | author        = "Jonathan Bernard" | ||||||
| description   = "Wrapper around std/logging to provide namespaced logging." | description   = "Wrapper around std/logging to provide namespaced logging." | ||||||
| license       = "MIT" | license       = "MIT" | ||||||
|   | |||||||
| @@ -15,7 +15,12 @@ template knownNamespaces(): TableRef[string, LoggingNamespace] = | |||||||
|     knownNamespacesInst = newTable[string, LoggingNamespace]() |     knownNamespacesInst = newTable[string, LoggingNamespace]() | ||||||
|   knownNamespacesInst |   knownNamespacesInst | ||||||
|  |  | ||||||
| proc initLoggingNamespace(name: string, level = lvlInfo, msgPrefix: string): LoggingNamespace = | proc initLoggingNamespace( | ||||||
|  |     name: string, | ||||||
|  |     level = lvlInfo, | ||||||
|  |     msgPrefix: string | ||||||
|  |   ): LoggingNamespace {.raises: [].} = | ||||||
|  |  | ||||||
|   result = LoggingNamespace( |   result = LoggingNamespace( | ||||||
|     name: name, |     name: name, | ||||||
|     level: level, |     level: level, | ||||||
| @@ -27,21 +32,27 @@ proc getLoggerForNamespace*( | |||||||
|     namespace: string, |     namespace: string, | ||||||
|     level = lvlInfo, |     level = lvlInfo, | ||||||
|     msgPrefix: Option[string] = none[string]() |     msgPrefix: Option[string] = none[string]() | ||||||
|   ): LoggingNamespace = |   ): LoggingNamespace {.raises: [].} = | ||||||
|   ## Get a LogginNamesapce for the given namespace. The first time this is |   ## Get a LogginNamesapce for the given namespace. The first time this is | ||||||
|   ## called for a given name space a new logger will be created. In that case, |   ## called for a given name space a new logger will be created. In that case, | ||||||
|   ## the optional `level` and `msgPrefix` will be used to configure the logger. |   ## the optional `level` and `msgPrefix` will be used to configure the logger. | ||||||
|   ## In all other cases, these paratmers are ignored and the existing namespace |   ## In all other cases, these paratmers are ignored and the existing namespace | ||||||
|   ## instance is returned |   ## instance is returned | ||||||
|  |  | ||||||
|   if knownNamespaces.hasKey(namespace): return knownNamespaces[namespace] |   if knownNamespaces.hasKey(namespace): | ||||||
|  |     try: return knownNamespaces[namespace] | ||||||
|  |     except KeyError: | ||||||
|  |       try: error "namespaced_logging: Impossible error. " & | ||||||
|  |         "knownNamespaces contains " & namespace & " but raised a KeyError " & | ||||||
|  |         "trying to access it." | ||||||
|  |       except: discard | ||||||
|   else: |   else: | ||||||
|     if msgPrefix.isSome: |     if msgPrefix.isSome: | ||||||
|       return initLoggingNamespace(namespace, level, msgPrefix.get) |       return initLoggingNamespace(namespace, level, msgPrefix.get) | ||||||
|     else: |     else: | ||||||
|       return initLoggingNamespace(namespace, level, namespace & ": ") |       return initLoggingNamespace(namespace, level, namespace & ": ") | ||||||
|  |  | ||||||
| proc setLevelForNamespace*(namespace: string, lvl: Level, recursive = false) = | proc setLevelForNamespace*(namespace: string, lvl: Level, recursive = false) {.raises: [] .} = | ||||||
|   if recursive: |   if recursive: | ||||||
|     for k, v in knownNamespaces.pairs: |     for k, v in knownNamespaces.pairs: | ||||||
|       if k.startsWith(namespace): |       if k.startsWith(namespace): | ||||||
| @@ -49,11 +60,13 @@ proc setLevelForNamespace*(namespace: string, lvl: Level, recursive = false) = | |||||||
|   else: getLoggerForNamespace(namespace).level = lvl |   else: getLoggerForNamespace(namespace).level = lvl | ||||||
|  |  | ||||||
| proc name*(ns: LoggingNamespace): string = ns.name | proc name*(ns: LoggingNamespace): string = ns.name | ||||||
| proc log*(ns: LoggingNamespace, level: Level, args: varargs[string, `$`]) = | proc log*(ns: LoggingNamespace, level: Level, args: varargs[string, `$`]) {.raises: [] .} = | ||||||
|   if level >= ns.level: |   try: | ||||||
|     if not ns.msgPrefix.isEmptyOrWhitespace: |     if level >= ns.level: | ||||||
|       log(level, args.mapIt(ns.msgPrefix & it)) |       if not ns.msgPrefix.isEmptyOrWhitespace: | ||||||
|     else: log(level, args) |         log(level, args.mapIt(ns.msgPrefix & it)) | ||||||
|  |       else: log(level, args) | ||||||
|  |   except: discard | ||||||
|  |  | ||||||
| proc debug*(ns: LoggingNamespace, args: varargs[string, `$`]) = log(ns, lvlDebug, args) | proc debug*(ns: LoggingNamespace, args: varargs[string, `$`]) = log(ns, lvlDebug, args) | ||||||
| proc info*(ns: LoggingNamespace, args: varargs[string, `$`]) = log(ns, lvlInfo, args) | proc info*(ns: LoggingNamespace, args: varargs[string, `$`]) = log(ns, lvlInfo, args) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user