Skip to content

Commit 4da342e

Browse files
author
Cecile Terpin
committed
use new JSON writer component
1 parent de59f03 commit 4da342e

File tree

2 files changed

+36
-51
lines changed

2 files changed

+36
-51
lines changed

dd-java-agent/agent-logging/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ dependencies {
2323
// This is fine since this project is shadowed into the agent-jar by dd-java-agent:agent-bootstrap
2424
api libs.slf4j
2525
api project(':internal-api')
26+
implementation project(':components:json')
2627
}

dd-java-agent/agent-logging/src/main/java/datadog/trace/logging/simplelogger/SLCompatHelper.java

Lines changed: 35 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package datadog.trace.logging.simplelogger;
22

3-
import static datadog.trace.util.Strings.escapeToJson;
3+
// import static datadog.trace.util.Strings.escapeToJson;
44

5+
import datadog.json.JsonWriter;
56
import datadog.trace.logging.LogLevel;
67
import datadog.trace.logging.LoggerHelper;
8+
import java.util.Arrays;
9+
import java.util.Iterator;
10+
import java.util.List;
711
import org.slf4j.Marker;
812

913
/**
@@ -143,83 +147,63 @@ void logJson(
143147
String threadName,
144148
String message,
145149
Throwable t) {
146-
StringBuilder buf = new StringBuilder(32);
147150

148-
buf.append("{");
149-
embedJson(buf, "origin", "dd.trace", true);
151+
JsonWriter writer = new JsonWriter();
152+
writer.beginObject();
153+
writer.name("origin").value("dd.trace");
150154

151155
if (timeMillis >= 0 && settings.showDateTime) {
152-
embedJsonKey(buf, "date");
156+
writer.name("date");
157+
StringBuilder buf = new StringBuilder(32);
153158
settings.dateTimeFormatter.appendFormattedDate(buf, timeMillis, startTimeMillis);
154-
buf.append("\",");
159+
writer.value(buf.toString());
155160
}
156161

157162
if (settings.showThreadName && threadName != null) {
158-
embedJson(buf, "logger.thread_name", threadName, true);
163+
writer.name("logger.thread_name").value(threadName);
159164
}
160165

161-
embedJsonKey(buf, "level");
166+
writer.name("level");
162167

163168
if (settings.warnLevelString != null && level == LogLevel.WARN) {
164-
embedJsonValue(buf, wrappedValueWithBracketsIfRequested(settings.warnLevelString), true);
169+
writer.value(wrappedValueWithBracketsIfRequested(settings.warnLevelString));
165170
} else if (marker != null) {
166-
embedJsonValue(buf, wrappedValueWithBracketsIfRequested(marker.getName()), true);
171+
writer.value(wrappedValueWithBracketsIfRequested(marker.getName()));
167172
} else {
168-
embedJsonValue(buf, wrappedValueWithBracketsIfRequested(level.name()), true);
173+
writer.value(wrappedValueWithBracketsIfRequested(level.name()));
169174
}
170175

171176
if (!logName.isEmpty()) {
172-
embedJson(buf, "logger.name", logName, true);
177+
writer.name("logger.name").value(logName);
173178
}
174-
embedJson(buf, "message", message, false);
179+
writer.name("message").value(message);
175180

176181
if (t != null) {
177-
buf.append(",");
178-
embedExceptionJson(buf, t);
182+
embedExceptionJson(writer, t);
179183
}
180-
181-
buf.append("}");
182-
183-
settings.printStream.println(buf);
184-
}
185-
186-
private void embedJson(StringBuilder buf, String key, String value, boolean withComma) {
187-
embedJsonKey(buf, key);
188-
embedJsonValue(buf, value, withComma);
184+
writer.endObject();
185+
settings.printStream.println(writer.toString());
189186
}
190187

191188
private String wrappedValueWithBracketsIfRequested(String value) {
192189
return settings.levelInBrackets ? '[' + value + ']' : value;
193190
}
194191

195-
private void embedJsonKey(StringBuilder buf, String key) {
196-
buf.append("\"").append(escapeToJson(key)).append("\":\"");
197-
}
198-
199-
private void embedJsonValue(StringBuilder buf, String value, boolean withComma) {
200-
buf.append(escapeToJson(value)).append("\"");
201-
if (withComma) {
202-
buf.append(",");
203-
}
204-
}
205-
206-
private void embedExceptionJson(StringBuilder buf, Throwable t) {
207-
buf.append("\"exception\":{");
208-
embedJson(buf, "message", escapeToJson(t.getMessage()), true);
209-
int length = t.getStackTrace().length;
210-
if (length > 0) {
211-
buf.append("\"stackTrace\":[\"");
212-
int count = 0;
213-
for (StackTraceElement element : t.getStackTrace()) {
214-
count += 1;
215-
buf.append(escapeToJson(element.toString()));
216-
if (count != length) {
217-
buf.append("\",\"");
218-
}
192+
private void embedExceptionJson(JsonWriter writer, Throwable t) {
193+
writer.name("exception");
194+
writer.beginObject();
195+
writer.name("message").value(t.getMessage());
196+
if (t.getStackTrace().length > 0) {
197+
List<StackTraceElement> stackTraceElementList = Arrays.asList(t.getStackTrace());
198+
Iterator<StackTraceElement> it = stackTraceElementList.iterator();
199+
writer.name("stackTrace");
200+
writer.beginArray();
201+
while (it.hasNext()) {
202+
StackTraceElement element = it.next();
203+
writer.value(element.toString());
219204
}
220-
buf.append("\"]");
205+
writer.endArray();
206+
writer.endObject();
221207
}
222-
223-
buf.append("}");
224208
}
225209
}

0 commit comments

Comments
 (0)