@@ -139,25 +139,94 @@ class SLCompatHelperTest extends Specification {
139
139
def printStream = new PrintStream (outputStream, true )
140
140
def props = new Properties ()
141
141
def dateTimeFormatter = SLCompatSettings.DTFormatter . create(dateTFS)
142
- def settings = new SLCompatSettings (props, props, warnS, showB, printStream, showS, showL, showT, dateTimeFormatter, showDT, LogLevel . INFO , false )
142
+ def settings = new SLCompatSettings (props, props, warnS, showB, printStream, showS, showL, showT, dateTimeFormatter, showDT, jsonE, LogLevel . INFO , false )
143
143
def helper = new SLCompatHelper (" foo.bar" , settings)
144
+
144
145
helper. log(level, null , 0 , 4711 , " thread" , " log" , null )
145
146
146
147
then :
147
148
outputStream. toString() == expected
148
149
149
150
where :
150
- level | warnS | showB | showS | showL | showT | dateTFS | showDT | expected
151
- LogLevel . WARN | null | false | false | false | false | null | false | " WARN log\n "
152
- LogLevel . WARN | " DANGER" | false | false | false | false | null | false | " DANGER log\n "
153
- LogLevel . INFO | " DANGER" | false | false | false | false | null | false | " INFO log\n "
154
- LogLevel . WARN | null | true | false | false | false | null | false | " [WARN] log\n "
155
- LogLevel . INFO | null | false | true | false | false | null | false | " INFO bar - log\n "
156
- LogLevel . INFO | null | true | true | true | false | null | false | " [INFO] bar - log\n "
157
- LogLevel . INFO | null | true | false | true | false | null | false | " [INFO] foo.bar - log\n "
158
- LogLevel . INFO | null | false | false | false | true | null | false | " [thread] INFO log\n "
159
- LogLevel . INFO | null | false | false | false | true | null | true | " 4711 [thread] INFO log\n "
160
- LogLevel . INFO | null | false | false | false | true | " yyyy-MM-dd HH:mm:ss z" | false | " [thread] INFO log\n "
161
- LogLevel . INFO | null | false | false | false | true | " yyyy-MM-dd HH:mm:ss z" | true | " ${ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z").format(new Date(4711))} [thread] INFO log\n "
151
+ level | warnS | showB | showS | showL | showT | dateTFS | showDT | jsonE | expected
152
+ LogLevel . WARN | null | false | false | false | false | null | false | false | " WARN log\n "
153
+ LogLevel . WARN | " DANGER" | false | false | false | false | null | false | false | " DANGER log\n "
154
+ LogLevel . INFO | " DANGER" | false | false | false | false | null | false | false | " INFO log\n "
155
+ LogLevel . WARN | null | true | false | false | false | null | false | false | " [WARN] log\n "
156
+ LogLevel . INFO | null | false | true | false | false | null | false | false | " INFO bar - log\n "
157
+ LogLevel . INFO | null | true | true | true | false | null | false | false | " [INFO] bar - log\n "
158
+ LogLevel . INFO | null | true | false | true | false | null | false | false | " [INFO] foo.bar - log\n "
159
+ LogLevel . INFO | null | false | false | false | true | null | false | false | " [thread] INFO log\n "
160
+ LogLevel . INFO | null | false | false | false | true | null | true | false | " 4711 [thread] INFO log\n "
161
+ LogLevel . INFO | null | false | false | false | true | " yyyy-MM-dd HH:mm:ss z" | false | false | " [thread] INFO log\n "
162
+ LogLevel . INFO | null | false | false | false | true | " yyyy-MM-dd HH:mm:ss z" | true | false | " ${ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z").format(new Date(4711))} [thread] INFO log\n "
163
+ }
164
+
165
+
166
+
167
+ def " test log output with Json configuration key" () {
168
+ when :
169
+ def outputStream = new ByteArrayOutputStream ()
170
+ def printStream = new PrintStream (outputStream, true )
171
+ def props = new Properties ()
172
+ def dateTimeFormatter = SLCompatSettings.DTFormatter . create(dateTFS)
173
+ def settings = new SLCompatSettings (props, props, warnS, showB, printStream, showS, showL, showT, dateTimeFormatter, showDT, jsonE, LogLevel . INFO , false )
174
+ def helper = new SLCompatHelper (" foo.bar" , settings)
175
+
176
+ // helper.log is where we split between logs and JSON logs
177
+ helper. log(level, null , " log" , null )
178
+
179
+ then :
180
+ outputStream. toString() == expected
181
+
182
+ where :
183
+ level | warnS | showB | showS | showL | showT | dateTFS | showDT | jsonE | expected
184
+ LogLevel . WARN | null | false | false | false | false | null | false | false | " WARN log\n "
185
+ LogLevel . WARN | " DANGER" | false | false | false | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" DANGER\" ,\" message\" :\" log\" }\n "
186
+ }
187
+
188
+ def " test log output in Json" () {
189
+ when :
190
+ def outputStream = new ByteArrayOutputStream ()
191
+ def printStream = new PrintStream (outputStream, true )
192
+ def props = new Properties ()
193
+ def dateTimeFormatter = SLCompatSettings.DTFormatter . create(dateTFS)
194
+ def settings = new SLCompatSettings (props, props, warnS, showB, printStream, showS, showL, showT, dateTimeFormatter, showDT, jsonE, LogLevel . INFO , false )
195
+ def helper = new SLCompatHelper (" foo.bar" , settings)
196
+
197
+ helper. logJson(level,null ,0 ,4711 ," thread" ," log" , null )
198
+
199
+ then :
200
+ outputStream. toString() == expected
201
+
202
+ where :
203
+ level | warnS | showB | showS | showL | showT | dateTFS | showDT | jsonE | expected
204
+ LogLevel . WARN | " DANGER" | false | false | false | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" DANGER\" ,\" message\" :\" log\" }\n "
205
+ LogLevel . INFO | " DANGER" | false | false | false | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" INFO\" ,\" message\" :\" log\" }\n "
206
+ LogLevel . WARN | null | true | false | false | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" [WARN]\" ,\" message\" :\" log\" }\n "
207
+ LogLevel . INFO | null | false | true | false | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" INFO\" ,\" logger.name\" :\" bar\" ,\" message\" :\" log\" }\n "
208
+ LogLevel . INFO | null | true | true | true | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" [INFO]\" ,\" logger.name\" :\" bar\" ,\" message\" :\" log\" }\n "
209
+ LogLevel . INFO | null | true | false | true | false | null | false | true | " {\" origin\" :\" dd.trace\" ,\" level\" :\" [INFO]\" ,\" logger.name\" :\" foo.bar\" ,\" message\" :\" log\" }\n "
210
+ LogLevel . INFO | null | false | false | false | true | null | false | true | " {\" origin\" :\" dd.trace\" ,\" logger.thread_name\" :\" thread\" ,\" level\" :\" INFO\" ,\" message\" :\" log\" }\n "
211
+ 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 "
212
+ 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 "
213
+ }
214
+
215
+
216
+ def " test logging with an embedded exception in Json" () {
217
+ setup :
218
+ def outputStream = new ByteArrayOutputStream ()
219
+ def printStream = new PrintStream (outputStream, true )
220
+ def props = new Properties ()
221
+ def dateTimeFormatter = SLCompatSettings.DTFormatter . create(" yyyy-MM-dd HH:mm:ss z" )
222
+ def settings = new SLCompatSettings (props, props, null , false , printStream, false ,true ,false , dateTimeFormatter, false , true , LogLevel . INFO , true )
223
+ def helper = new SLCompatHelper (" foo" , settings)
224
+ try {
225
+ throw new IOException (" wrong" )
226
+ } catch (Exception exception) {
227
+ helper. log(LogLevel . INFO , null , " log" , exception)
228
+ }
229
+ expect :
230
+ outputStream. toString() ==~ / ^\{ "origin":"dd.trace","level":"INFO","logger.name":"foo","message":"log","exception":\{ "message":"wrong","stackTrace":\[ .*\]\}\}\n $/
162
231
}
163
232
}
0 commit comments