Merge pull request #7063 from yglukhov/logging-dont-crash-on-nil
logging: don't crash on nil strings
This commit is contained in:
commit
082868f1bb
1 changed files with 13 additions and 2 deletions
|
|
@ -107,8 +107,13 @@ var
|
||||||
proc substituteLog*(frmt: string, level: Level, args: varargs[string, `$`]): string =
|
proc substituteLog*(frmt: string, level: Level, args: varargs[string, `$`]): string =
|
||||||
## Format a log message using the ``frmt`` format string, ``level`` and varargs.
|
## Format a log message using the ``frmt`` format string, ``level`` and varargs.
|
||||||
## See the module documentation for the format string syntax.
|
## See the module documentation for the format string syntax.
|
||||||
|
const nilString = "nil"
|
||||||
|
|
||||||
var msgLen = 0
|
var msgLen = 0
|
||||||
for arg in args:
|
for arg in args:
|
||||||
|
if arg.isNil:
|
||||||
|
msgLen += nilString.len
|
||||||
|
else:
|
||||||
msgLen += arg.len
|
msgLen += arg.len
|
||||||
result = newStringOfCap(frmt.len + msgLen + 20)
|
result = newStringOfCap(frmt.len + msgLen + 20)
|
||||||
var i = 0
|
var i = 0
|
||||||
|
|
@ -136,6 +141,9 @@ proc substituteLog*(frmt: string, level: Level, args: varargs[string, `$`]): str
|
||||||
of "levelname": result.add(LevelNames[level])
|
of "levelname": result.add(LevelNames[level])
|
||||||
else: discard
|
else: discard
|
||||||
for arg in args:
|
for arg in args:
|
||||||
|
if arg.isNil:
|
||||||
|
result.add(nilString)
|
||||||
|
else:
|
||||||
result.add(arg)
|
result.add(arg)
|
||||||
|
|
||||||
method log*(logger: Logger, level: Level, args: varargs[string, `$`]) {.
|
method log*(logger: Logger, level: Level, args: varargs[string, `$`]) {.
|
||||||
|
|
@ -361,3 +369,6 @@ when not defined(testing) and isMainModule:
|
||||||
addHandler(L)
|
addHandler(L)
|
||||||
for i in 0 .. 25:
|
for i in 0 .. 25:
|
||||||
info("hello", i)
|
info("hello", i)
|
||||||
|
|
||||||
|
var nilString: string
|
||||||
|
info "hello ", nilString
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue