Skip to content

Commit 10f5803

Browse files
author
Cecile Terpin
committed
initial commit
1 parent 07b28a0 commit 10f5803

File tree

6 files changed

+105
-95
lines changed

6 files changed

+105
-95
lines changed

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Agent.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ public class Agent {
6969

7070
private static final String SIMPLE_LOGGER_SHOW_DATE_TIME_PROPERTY =
7171
"datadog.slf4j.simpleLogger.showDateTime";
72+
private static final String SIMPLE_LOGGER_JSON_ENABLED_PROPERTY =
73+
"datadog.slf4j.simpleLogger.json.enabled";
7274
private static final String SIMPLE_LOGGER_DATE_TIME_FORMAT_PROPERTY =
7375
"datadog.slf4j.simpleLogger.dateTimeFormat";
7476
private static final String SIMPLE_LOGGER_DATE_TIME_FORMAT_DEFAULT =
@@ -1104,6 +1106,8 @@ private static void configureLogger() {
11041106
setSystemPropertyDefault(SIMPLE_LOGGER_SHOW_DATE_TIME_PROPERTY, "true");
11051107
setSystemPropertyDefault(
11061108
SIMPLE_LOGGER_DATE_TIME_FORMAT_PROPERTY, SIMPLE_LOGGER_DATE_TIME_FORMAT_DEFAULT);
1109+
setSystemPropertyDefault(
1110+
SIMPLE_LOGGER_JSON_ENABLED_PROPERTY, "false");
11071111

11081112
String logLevel;
11091113
if (isDebugMode()) {
Lines changed: 90 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package datadog.trace.logging.simplelogger;
22

3-
import datadog.trace.api.Config;
3+
import static datadog.trace.util.Strings.escapeToJson;
44
import datadog.trace.logging.LogLevel;
55
import datadog.trace.logging.LoggerHelper;
66
import org.slf4j.Marker;
@@ -35,10 +35,11 @@ public void log(LogLevel level, Marker marker, String message, Throwable t) {
3535
if (settings.showDateTime) {
3636
timeMillis = System.currentTimeMillis();
3737
}
38-
if (Config.get().isJsonLogsEnabled()) {
39-
logJson(level, marker, SLCompatFactory.START_TIME, timeMillis, message, t);
38+
39+
if (settings.jsonEnabled) {
40+
logJson(level, marker, SLCompatFactory.START_TIME, timeMillis, message, t);
4041
} else {
41-
log(level, marker, SLCompatFactory.START_TIME, timeMillis, message, t);
42+
log(level, marker, SLCompatFactory.START_TIME, timeMillis, message, t);
4243
}
4344
}
4445

@@ -56,6 +57,70 @@ void log(
5657
log(level, marker, startTimeMillis, timeMillis, threadName, message, t);
5758
}
5859

60+
void log(
61+
LogLevel level,
62+
Marker marker,
63+
long startTimeMillis,
64+
long timeMillis,
65+
String threadName,
66+
String message,
67+
Throwable t) {
68+
StringBuilder buf = new StringBuilder(32);
69+
70+
if (timeMillis >= 0 && settings.showDateTime) {
71+
settings.dateTimeFormatter.appendFormattedDate(buf, timeMillis, startTimeMillis);
72+
buf.append(' ');
73+
}
74+
75+
if (settings.showThreadName && threadName != null) {
76+
buf.append('[');
77+
buf.append(threadName);
78+
buf.append("] ");
79+
}
80+
81+
if (settings.levelInBrackets) {
82+
buf.append('[');
83+
}
84+
85+
if (settings.warnLevelString != null && level == LogLevel.WARN) {
86+
buf.append(settings.warnLevelString);
87+
} else if (marker != null) {
88+
buf.append(marker.getName());
89+
} else {
90+
buf.append(level.name());
91+
}
92+
if (settings.levelInBrackets) {
93+
buf.append(']');
94+
}
95+
buf.append(' ');
96+
97+
if (!logName.isEmpty()) {
98+
buf.append(logName).append(" - ");
99+
}
100+
101+
buf.append(message);
102+
103+
if (settings.embedException && t != null) {
104+
embedException(buf, t);
105+
}
106+
107+
settings.printStream.println(buf);
108+
if (!settings.embedException && t != null) {
109+
t.printStackTrace(settings.printStream);
110+
}
111+
}
112+
113+
private void embedException(StringBuilder buf, Throwable t) {
114+
buf.append(" [exception:");
115+
buf.append(t.toString());
116+
buf.append(".");
117+
for (StackTraceElement element : t.getStackTrace()) {
118+
buf.append(" at ");
119+
buf.append(element.toString());
120+
}
121+
buf.append("]");
122+
}
123+
59124
void logJson(
60125
LogLevel level,
61126
Marker marker,
@@ -81,7 +146,7 @@ void logJson(
81146
StringBuilder buf = new StringBuilder(32);
82147

83148
buf.append("{");
84-
149+
85150
if (timeMillis >= 0 && settings.showDateTime) {
86151
embedJsonKey(buf, "time");
87152
settings.dateTimeFormatter.appendFormattedDate(buf, timeMillis, startTimeMillis);
@@ -102,15 +167,15 @@ void logJson(
102167
}
103168

104169
if (!logName.isEmpty()) {
105-
embedJson(buf, "logName", logName, true);
170+
embedJson(buf, "loggerName", logName, true);
106171
}
172+
embedJson(buf, "message", message, false);
107173

108174
if (t != null) {
175+
buf.append(",");
109176
embedExceptionJson(buf, t);
110177
}
111178

112-
embedJson(buf, "message", message, false);
113-
114179
buf.append("}");
115180

116181
settings.printStream.println(buf);
@@ -119,94 +184,36 @@ void logJson(
119184
private void embedJson(StringBuilder buf, String key, String value, boolean withComma) {
120185
embedJsonKey(buf, key);
121186
embedJsonValue(buf, value, withComma);
187+
122188
}
123189

124190
private void embedJsonKey(StringBuilder buf, String key) {
125-
buf.append("\"").append(key).append("\":\"");
191+
buf.append("\"").append(escapeToJson(key)).append("\":\"");
126192
}
127193

128194
private void embedJsonValue(StringBuilder buf, String value, boolean withComma) {
129-
buf.append(value).append("\"");
130-
195+
buf.append(escapeToJson(value)).append("\"");
131196
if (withComma) {
132197
buf.append(",");
133198
}
134199
}
135-
136-
void log(
137-
LogLevel level,
138-
Marker marker,
139-
long startTimeMillis,
140-
long timeMillis,
141-
String threadName,
142-
String message,
143-
Throwable t) {
144-
StringBuilder buf = new StringBuilder(32);
145-
146-
if (timeMillis >= 0 && settings.showDateTime) {
147-
settings.dateTimeFormatter.appendFormattedDate(buf, timeMillis, startTimeMillis);
148-
buf.append(' ');
149-
}
150-
151-
if (settings.showThreadName && threadName != null) {
152-
buf.append('[');
153-
buf.append(threadName);
154-
buf.append("] ");
155-
}
156-
157-
if (settings.levelInBrackets) {
158-
buf.append('[');
159-
}
160-
161-
if (settings.warnLevelString != null && level == LogLevel.WARN) {
162-
buf.append(settings.warnLevelString);
163-
} else if (marker != null) {
164-
buf.append(marker.getName());
165-
} else {
166-
buf.append(level.name());
167-
}
168-
if (settings.levelInBrackets) {
169-
buf.append(']');
170-
}
171-
buf.append(' ');
172-
173-
if (!logName.isEmpty()) {
174-
buf.append(logName).append(" - ");
175-
}
176-
177-
buf.append(message);
178-
179-
if (settings.embedException && t != null) {
180-
embedException(buf, t);
181-
}
182-
183-
settings.printStream.println(buf);
184-
if (!settings.embedException && t != null) {
185-
t.printStackTrace(settings.printStream);
186-
}
187-
}
188-
189-
private void embedException(StringBuilder buf, Throwable t) {
190-
buf.append(" [exception:");
191-
buf.append(t.toString());
192-
buf.append(".");
193-
for (StackTraceElement element : t.getStackTrace()) {
194-
buf.append(" at ");
195-
buf.append(element.toString());
196-
}
197-
buf.append("]");
198-
}
199-
200200
private void embedExceptionJson(StringBuilder buf, Throwable t) {
201201
buf.append("\"exception\":{");
202-
embedJson(buf, "message", t.getMessage(), true);
203-
buf.append("\"stackTrace\":[\"");
204-
205-
for (StackTraceElement element : t.getStackTrace()) {
206-
buf.append(element.toString());
207-
buf.append("\",\"");
202+
embedJson(buf, "message",escapeToJson(t.getMessage()), true);
203+
int length = t.getStackTrace().length;
204+
if (length > 0) {
205+
buf.append("\"stackTrace\":[\"");
206+
int count = 0;
207+
for (StackTraceElement element : t.getStackTrace()) {
208+
count += 1;
209+
buf.append(escapeToJson(element.toString()));
210+
if (count != length) {
211+
buf.append("\",\"");
212+
}
213+
}
214+
buf.append("\"]");
208215
}
209216

210-
buf.append("\"]");
217+
buf.append("}");
211218
}
212219
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package datadog.trace.logging.simplelogger;
22

3+
import static java.time.format.DateTimeFormatter.ISO_OFFSET_DATE_TIME;
4+
35
import datadog.trace.logging.LogLevel;
46
import datadog.trace.logging.LogReporter;
57
import datadog.trace.logging.PrintStreamWrapper;
@@ -33,9 +35,11 @@ public static final class Names {
3335
public static final String SHOW_THREAD_NAME = "showThreadName";
3436
public static final String DATE_TIME_FORMAT = "dateTimeFormat";
3537
public static final String SHOW_DATE_TIME = "showDateTime";
38+
public static final String JSON_ENABLED = "json.enabled";
3639
public static final String DEFAULT_LOG_LEVEL = "defaultLogLevel";
3740
public static final String EMBED_EXCEPTION = "embedException";
3841
public static final String CONFIGURATION_FILE = "configurationFile";
42+
3943
}
4044

4145
public static final class Keys {
@@ -53,6 +57,7 @@ public static final class Keys {
5357
public static final String SHOW_THREAD_NAME = PREFIX + Names.SHOW_THREAD_NAME;
5458
public static final String DATE_TIME_FORMAT = PREFIX + Names.DATE_TIME_FORMAT;
5559
public static final String SHOW_DATE_TIME = PREFIX + Names.SHOW_DATE_TIME;
60+
public static final String JSON_ENABLED = PREFIX + Names.JSON_ENABLED;
5661
public static final String DEFAULT_LOG_LEVEL = PREFIX + Names.DEFAULT_LOG_LEVEL;
5762
public static final String EMBED_EXCEPTION = PREFIX + Names.EMBED_EXCEPTION;
5863

@@ -70,6 +75,7 @@ public static final class Defaults {
7075
public static final boolean SHOW_THREAD_NAME = true;
7176
public static final String DATE_TIME_FORMAT = null;
7277
public static final boolean SHOW_DATE_TIME = false;
78+
public static final boolean JSON_ENABLED = false;
7379
public static final String DEFAULT_LOG_LEVEL = "INFO";
7480
public static final boolean EMBED_EXCEPTION = false;
7581

@@ -271,6 +277,7 @@ static boolean getBoolean(
271277
final boolean showThreadName;
272278
final DTFormatter dateTimeFormatter;
273279
final boolean showDateTime;
280+
final boolean jsonEnabled;
274281
final LogLevel defaultLogLevel;
275282
final boolean embedException;
276283

@@ -304,6 +311,7 @@ public SLCompatSettings(
304311
getString(
305312
properties, fileProperties, Keys.DATE_TIME_FORMAT, Defaults.DATE_TIME_FORMAT)),
306313
getBoolean(properties, fileProperties, Keys.SHOW_DATE_TIME, Defaults.SHOW_DATE_TIME),
314+
getBoolean(properties, fileProperties, Keys.JSON_ENABLED, Defaults.JSON_ENABLED),
307315
LogLevel.fromString(
308316
getString(
309317
properties, fileProperties, Keys.DEFAULT_LOG_LEVEL, Defaults.DEFAULT_LOG_LEVEL)),
@@ -321,6 +329,7 @@ public SLCompatSettings(
321329
boolean showThreadName,
322330
DTFormatter dateTimeFormatter,
323331
boolean showDateTime,
332+
boolean jsonEnabled,
324333
LogLevel defaultLogLevel,
325334
boolean embedException) {
326335
this.properties = properties;
@@ -333,6 +342,7 @@ public SLCompatSettings(
333342
this.showThreadName = showThreadName;
334343
this.dateTimeFormatter = dateTimeFormatter;
335344
this.showDateTime = showDateTime;
345+
this.jsonEnabled = jsonEnabled;
336346
this.defaultLogLevel = defaultLogLevel;
337347
this.embedException = embedException;
338348
}
@@ -375,6 +385,7 @@ public Map<String, Object> getSettingsDescription() {
375385
settingsDescription.put(Names.SHOW_SHORT_LOG_NAME, showShortLogName);
376386
settingsDescription.put(Names.SHOW_THREAD_NAME, showThreadName);
377387
settingsDescription.put(Names.SHOW_DATE_TIME, showDateTime);
388+
settingsDescription.put(Names.JSON_ENABLED, jsonEnabled);
378389
String dateTimeFormat =
379390
getString(properties, fileProperties, Keys.DATE_TIME_FORMAT, Defaults.DATE_TIME_FORMAT);
380391
settingsDescription.put(

dd-trace-api/src/main/java/datadog/trace/api/ConfigDefaults.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ public final class ConfigDefaults {
4343
public static final String DEFAULT_SERVLET_ROOT_CONTEXT_SERVICE_NAME = "root-servlet";
4444
public static final String DEFAULT_AGENT_WRITER_TYPE = "DDAgentWriter";
4545
public static final boolean DEFAULT_STARTUP_LOGS_ENABLED = true;
46-
public static final boolean DEFAULT_JSON_LOGS_ENABLED = false;
4746

4847
static final boolean DEFAULT_WRITER_BAGGAGE_INJECT = true;
4948
static final String DEFAULT_SITE = "datadoghq.com";

dd-trace-api/src/main/java/datadog/trace/api/config/GeneralConfig.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ public final class GeneralConfig {
3636
public static final String TRIAGE_REPORT_DIR = "triage.report.dir";
3737

3838
public static final String STARTUP_LOGS_ENABLED = "trace.startup.logs";
39-
public static final String JSON_LOGS_ENABLED = "trace.experimental.json.logs";
4039

4140
public static final String DOGSTATSD_START_DELAY = "dogstatsd.start-delay";
4241
public static final String DOGSTATSD_HOST = "dogstatsd.host";

internal-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@
8989
import static datadog.trace.api.ConfigDefaults.DEFAULT_JMX_FETCH_ENABLED;
9090
import static datadog.trace.api.ConfigDefaults.DEFAULT_JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_ENABLED;
9191
import static datadog.trace.api.ConfigDefaults.DEFAULT_JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_LIMIT;
92-
import static datadog.trace.api.ConfigDefaults.DEFAULT_JSON_LOGS_ENABLED;
9392
import static datadog.trace.api.ConfigDefaults.DEFAULT_LOGS_INJECTION_ENABLED;
9493
import static datadog.trace.api.ConfigDefaults.DEFAULT_PARTIAL_FLUSH_MIN_SPANS;
9594
import static datadog.trace.api.ConfigDefaults.DEFAULT_PERF_METRICS_ENABLED;
@@ -268,7 +267,6 @@
268267
import static datadog.trace.api.config.GeneralConfig.HEALTH_METRICS_ENABLED;
269268
import static datadog.trace.api.config.GeneralConfig.HEALTH_METRICS_STATSD_HOST;
270269
import static datadog.trace.api.config.GeneralConfig.HEALTH_METRICS_STATSD_PORT;
271-
import static datadog.trace.api.config.GeneralConfig.JSON_LOGS_ENABLED;
272270
import static datadog.trace.api.config.GeneralConfig.LOG_LEVEL;
273271
import static datadog.trace.api.config.GeneralConfig.PERF_METRICS_ENABLED;
274272
import static datadog.trace.api.config.GeneralConfig.PRIMARY_TAG;
@@ -936,7 +934,6 @@ public static String getHostName() {
936934
private final String triageReportDir;
937935

938936
private final boolean startupLogsEnabled;
939-
private final boolean jsonLogsEnabled;
940937
private final String configFileStatus;
941938

942939
private final IdGenerationStrategy idGenerationStrategy;
@@ -2109,7 +2106,6 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
21092106

21102107
startupLogsEnabled =
21112108
configProvider.getBoolean(STARTUP_LOGS_ENABLED, DEFAULT_STARTUP_LOGS_ENABLED);
2112-
jsonLogsEnabled = configProvider.getBoolean(JSON_LOGS_ENABLED, DEFAULT_JSON_LOGS_ENABLED);
21132109

21142110
cwsEnabled = configProvider.getBoolean(CWS_ENABLED, DEFAULT_CWS_ENABLED);
21152111
cwsTlsRefresh = configProvider.getInteger(CWS_TLS_REFRESH, DEFAULT_CWS_TLS_REFRESH);
@@ -3559,10 +3555,6 @@ public boolean isStartupLogsEnabled() {
35593555
return startupLogsEnabled;
35603556
}
35613557

3562-
public boolean isJsonLogsEnabled() {
3563-
return jsonLogsEnabled;
3564-
}
3565-
35663558
public boolean isCwsEnabled() {
35673559
return cwsEnabled;
35683560
}
@@ -4754,8 +4746,6 @@ public String toString() {
47544746
+ triageReportDir
47554747
+ ", startLogsEnabled="
47564748
+ startupLogsEnabled
4757-
+ ", jsonLogsEnabled="
4758-
+ jsonLogsEnabled
47594749
+ ", configFile='"
47604750
+ configFileStatus
47614751
+ '\''

0 commit comments

Comments
 (0)