diff --git a/slfmt.nimble b/slfmt.nimble index fcaa9db..f5299ec 100644 --- a/slfmt.nimble +++ b/slfmt.nimble @@ -1,6 +1,6 @@ # Package -version = "0.2.2" +version = "0.2.3" author = "Jonathan Bernard" description = "Small utility to pretty-print strucutured logs." license = "MIT" diff --git a/src/slfmt.nim b/src/slfmt.nim index 2646aff..1664a74 100644 --- a/src/slfmt.nim +++ b/src/slfmt.nim @@ -4,7 +4,7 @@ import docopt, timeutils, zero_functional from std/logging import Level from std/sequtils import toSeq -const VERSION = "0.2.2" +const VERSION = "0.2.3" const USAGE = """Usage: slfmt [options] @@ -98,14 +98,21 @@ proc compactFormat(logJson: JsonNode): string = filter(not ["level", "scope", "ts", "msg"].contains(it[0])) let restMsg = join(restNodes --> - map("$1: $2" % [decorate(it[0], fgCyan), it[1].getStr]), " ") + map("$1: $2" % [ + decorate(it[0], fgCyan), + if it[1].kind == JString: it[1].getStr + else: pretty(it[1]), + " "])) if restMsg.len + result.len + 2 < terminalWidth(): result &= " " & restMsg else: var line = " " for (key, val) in restNodes: - let field = "$1: $2" % [decorate(key, fgCyan), val.getStr] + let fieldVal = + if val.kind == JString: val.getStr + else: pretty(val) + let field = "$1: $2" % [decorate(key, fgCyan), fieldVal] if line.len + field.len + 2 > terminalWidth(): result &= "\n " & line line = " "