write logs to stderr instead of stdout; fixes #9547 (#9554)

This commit is contained in:
Ahmed T. Youssef 2018-10-30 08:36:31 +02:00 • committed by Andreas Rumpf
commit df68c2da49

View file

@ -80,6 +80,7 @@ type
ConsoleLogger* = ref object of Logger ## logger that writes the messages to the ConsoleLogger* = ref object of Logger ## logger that writes the messages to the
## console ## console
useStderr*: bool ## will send logs into Stderr if set
when not defined(js): when not defined(js):
type type
@ -150,16 +151,20 @@ method log*(logger: ConsoleLogger, level: Level, args: varargs[string, `$`]) =
{.emit: "console.log(`cln`);".} {.emit: "console.log(`cln`);".}
else: else:
try: try:
writeLine(stdout, ln) var handle = stdout
if level in {lvlError, lvlFatal}: flushFile(stdout) if logger.useStderr:
handle = stderr
writeLine(handle, ln)
if level in {lvlError, lvlFatal}: flushFile(handle)
except IOError: except IOError:
discard discard
proc newConsoleLogger*(levelThreshold = lvlAll, fmtStr = defaultFmtStr): ConsoleLogger = proc newConsoleLogger*(levelThreshold = lvlAll, fmtStr = defaultFmtStr, useStderr=false): ConsoleLogger =
## Creates a new console logger. This logger logs to the console. ## Creates a new console logger. This logger logs to the console.
new result new result
result.fmtStr = fmtStr result.fmtStr = fmtStr
result.levelThreshold = levelThreshold result.levelThreshold = levelThreshold
result.useStderr = useStderr
when not defined(js): when not defined(js):
method log*(logger: FileLogger, level: Level, args: varargs[string, `$`]) = method log*(logger: FileLogger, level: Level, args: varargs[string, `$`]) =