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,9 +107,14 @@ var
|
|||
proc substituteLog*(frmt: string, level: Level, args: varargs[string, `$`]): string =
|
||||
## Format a log message using the ``frmt`` format string, ``level`` and varargs.
|
||||
## See the module documentation for the format string syntax.
|
||||
const nilString = "nil"
|
||||
|
||||
var msgLen = 0
|
||||
for arg in args:
|
||||
msgLen += arg.len
|
||||
if arg.isNil:
|
||||
msgLen += nilString.len
|
||||
else:
|
||||
msgLen += arg.len
|
||||
result = newStringOfCap(frmt.len + msgLen + 20)
|
||||
var i = 0
|
||||
while i < frmt.len:
|
||||
|
|
@ -136,7 +141,10 @@ proc substituteLog*(frmt: string, level: Level, args: varargs[string, `$`]): str
|
|||
of "levelname": result.add(LevelNames[level])
|
||||
else: discard
|
||||
for arg in args:
|
||||
result.add(arg)
|
||||
if arg.isNil:
|
||||
result.add(nilString)
|
||||
else:
|
||||
result.add(arg)
|
||||
|
||||
method log*(logger: Logger, level: Level, args: varargs[string, `$`]) {.
|
||||
raises: [Exception], gcsafe,
|
||||
|
|
@ -361,3 +369,6 @@ when not defined(testing) and isMainModule:
|
|||
addHandler(L)
|
||||
for i in 0 .. 25:
|
||||
info("hello", i)
|
||||
|
||||
var nilString: string
|
||||
info "hello ", nilString
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue