@@ -164,7 +164,8 @@ class SLCompatHelperTest extends Specification {
164164 }
165165
166166
167- def " test log output with JSon configuration" () {
167+
168+ def " test log output with Json configuration key" () {
168169 when :
169170 def outputStream = new ByteArrayOutputStream ()
170171 def printStream = new PrintStream (outputStream, true )
@@ -173,21 +174,60 @@ class SLCompatHelperTest extends Specification {
173174 def settings = new SLCompatSettings (props, props, warnS, showB, printStream, showS, showL, showT, dateTimeFormatter, showDT, jsonE, LogLevel . INFO , false )
174175 def helper = new SLCompatHelper (" foo.bar" , settings)
175176
176- helper. log(level, null , " log" , null )
177+ // helper.log is where we split between logs and JSON logs
178+ helper. log(level, null , " log" , null )
177179
178180 then :
179181 outputStream. toString() == expected
180182
181183 where :
182184 level | warnS | showB | showS | showL | showT | dateTFS | showDT | jsonE | expected
183185 LogLevel . WARN | null | false | false | false | false | null | false | false | " WARN log\n "
184- LogLevel . WARN | " DANGER" | false | false | false | false | null | false | true | " {\" level\" :\" DANGER\" ,\" message\" :\" log\" }\n "
185- LogLevel . INFO | " DANGER" | false | false | false | false | null | false | true | " {\" level\" :\" INFO\" ,\" message\" :\" log\" }\n "
186- LogLevel . WARN | null | true | false | false | false | null | false | true | " {\" level\" :\" [WARN]\" ,\" message\" :\" log\" }\n "
187- LogLevel . INFO | null | false | true | false | false | null | false | true | " {\" level\" :\" INFO\" ,\" loggerName\" :\" bar\" ,\" message\" :\" log\" }\n "
188- LogLevel . INFO | null | true | true | true | false | null | false | true | " {\" level\" :\" [INFO]\" ,\" loggerName\" :\" bar\" ,\" message\" :\" log\" }\n "
189- LogLevel . INFO | null | true | false | true | false | null | false | true | " {\" level\" :\" [INFO]\" ,\" loggerName\" :\" foo.bar\" ,\" message\" :\" log\" }\n "
190- LogLevel . INFO | null | false | false | false | true | null | false | true | " {\" threadName\" :\" Test worker\" ,\" level\" :\" INFO\" ,\" message\" :\" log\" }\n "
191- LogLevel . INFO | null | false | false | false | true | " yyyy-MM-dd HH:mm:ss z" | false | true | " {\" threadName\" :\" Test worker\" ,\" level\" :\" INFO\" ,\" message\" :\" log\" }\n "
186+ LogLevel . WARN | " DANGER" | false | false | false | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" DANGER\" ,\" message\" :\" log\" }\n "
187+ }
188+
189+ def " test log output in Json" () {
190+ when :
191+ def outputStream = new ByteArrayOutputStream ()
192+ def printStream = new PrintStream (outputStream, true )
193+ def props = new Properties ()
194+ def dateTimeFormatter = SLCompatSettings.DTFormatter . create(dateTFS)
195+ def settings = new SLCompatSettings (props, props, warnS, showB, printStream, showS, showL, showT, dateTimeFormatter, showDT, jsonE, LogLevel . INFO , false )
196+ def helper = new SLCompatHelper (" foo.bar" , settings)
197+
198+ helper. logJson(level,null ,0 ,4711 ," thread" ," log" , null )
199+
200+ then :
201+ outputStream. toString() == expected
202+
203+ where :
204+ level | warnS | showB | showS | showL | showT | dateTFS | showDT | jsonE | expected
205+ LogLevel . WARN | " DANGER" | false | false | false | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" DANGER\" ,\" message\" :\" log\" }\n "
206+ LogLevel . INFO | " DANGER" | false | false | false | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" INFO\" ,\" message\" :\" log\" }\n "
207+ LogLevel . WARN | null | true | false | false | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" [WARN]\" ,\" message\" :\" log\" }\n "
208+ LogLevel . INFO | null | false | true | false | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" INFO\" ,\" logger.name\" :\" bar\" ,\" message\" :\" log\" }\n "
209+ LogLevel . INFO | null | true | true | true | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" [INFO]\" ,\" logger.name\" :\" bar\" ,\" message\" :\" log\" }\n "
210+ LogLevel . INFO | null | true | false | true | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" [INFO]\" ,\" logger.name\" :\" foo.bar\" ,\" message\" :\" log\" }\n "
211+ LogLevel . INFO | null | false | false | false | true | null | false | true | " {\" origin\" :\" dd.trace\" ,\" logger.thread_name\" :\" thread\" ,\" level\" :\" INFO\" ,\" message\" :\" log\" }\n "
212+ LogLevel . INFO | null | false | false | false | true | " yyyy-MM-dd HH:mm:ss z" | false | true | " {\" origin\" :\" dd.trace\" ,\" logger.thread_name\" :\" thread\" ,\" level\" :\" INFO\" ,\" message\" :\" log\" }\n "
213+ LogLevel . INFO | null | false | false | false | true | " yyyy-MM-dd HH:mm:ss z" | true | true | " {\" origin\" :\" dd.trace\" ,\" date\" :\" ${ new SimpleDateFormat(dateTFS).format(new Date(4711))} \" ,\" logger.thread_name\" :\" thread\" ,\" level\" :\" INFO\" ,\" message\" :\" log\" }\n "
214+ }
215+
216+
217+ def " test logging with an embedded exception in Json" () {
218+ setup :
219+ def outputStream = new ByteArrayOutputStream ()
220+ def printStream = new PrintStream (outputStream, true )
221+ def props = new Properties ()
222+ def dateTimeFormatter = SLCompatSettings.DTFormatter . create(" yyyy-MM-dd HH:mm:ss z" )
223+ def settings = new SLCompatSettings (props, props, null , false , printStream, false ,true ,false , dateTimeFormatter, false , true , LogLevel . INFO , true )
224+ def helper = new SLCompatHelper (" foo" , settings)
225+ try {
226+ throw new IOException (" wrong" )
227+ } catch (Exception exception) {
228+ helper. log(LogLevel . INFO , null , " log" , exception)
229+ }
230+ expect :
231+ outputStream. toString() ==~ / ^\{ "origin":"dd.trace","level":"INFO","logger.name":"foo","message":"log","exception":\{ "message":"wrong","stackTrace":\[ .*\]\}\}\n $/
192232 }
193233}
0 commit comments