Skip to content

Commit

Permalink
Add logging capture threshold
Browse files Browse the repository at this point in the history
  • Loading branch information
trask committed Aug 21, 2019
1 parent 42a060a commit 1458676
Show file tree
Hide file tree
Showing 8 changed files with 63 additions and 86 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,18 @@ static Map<String, Map<String, Object>> getInstrumentationConfig(BuiltInInstrume
jdbcConfiguration.put("captureGetConnection", false);
jdbcConfiguration.put("explainPlanThresholdMillis", builtInConfiguration.getQueryPlanThresholdInMS());

String loggingThreshold = builtInConfiguration.getLoggingThreshold();

Map<String, Object> log4jConfiguration = new HashMap<>();
log4jConfiguration.put("threshold", loggingThreshold);

Map<String, Object> logbackConfiguration = new HashMap<>();
logbackConfiguration.put("threshold", loggingThreshold);

instrumentationConfiguration.put("servlet", servletConfiguration);
instrumentationConfiguration.put("jdbc", jdbcConfiguration);
instrumentationConfiguration.put("log4j", log4jConfiguration);
instrumentationConfiguration.put("logback", logbackConfiguration);

return instrumentationConfiguration;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public class BuiltInInstrumentation {
private final boolean jdbcEnabled;

private final boolean loggingEnabled;
private final String loggingThreshold;

private final boolean jedisEnabled;

Expand All @@ -43,6 +44,7 @@ public BuiltInInstrumentation(boolean enabled,
boolean w3cBackCompatEnabled,
boolean jdbcEnabled,
boolean loggingEnabled,
String loggingThreshold,
boolean jedisEnabled,
long queryPlanThresholdInMS) {
this.enabled = enabled;
Expand All @@ -51,6 +53,7 @@ public BuiltInInstrumentation(boolean enabled,
this.w3cBackCompatEnabled = w3cBackCompatEnabled;
this.jdbcEnabled = jdbcEnabled;
this.loggingEnabled = loggingEnabled;
this.loggingThreshold = loggingThreshold;
this.jedisEnabled = jedisEnabled;
this.queryPlanThresholdInMS = queryPlanThresholdInMS;
}
Expand All @@ -75,6 +78,10 @@ public boolean isJdbcEnabled() {
return jdbcEnabled;
}

public String getLoggingThreshold() {
return loggingThreshold;
}

public boolean isLoggingEnabled() {
return loggingEnabled;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public class BuiltInInstrumentationBuilder {
private boolean jdbcEnabled;

private boolean loggingEnabled;
private String loggingThreshold;

private boolean jedisEnabled;

Expand All @@ -54,6 +55,7 @@ public BuiltInInstrumentation create() {
w3cBackCompatEnabled && enabled,
jdbcEnabled && enabled,
loggingEnabled && enabled,
loggingThreshold,
jedisEnabled && enabled,
queryPlanThresholdInMS
);
Expand All @@ -73,8 +75,9 @@ public void setJdbcEnabled(boolean jdbcEnabled) {
this.jdbcEnabled = jdbcEnabled;
}

public void setLoggingEnabled(boolean loggingEnabled) {
public void setLoggingEnabled(boolean loggingEnabled, String loggingThreshold) {
this.loggingEnabled = loggingEnabled;
this.loggingThreshold = loggingThreshold;
}

public void setJedisEnabled(boolean jedisEnabled) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,9 @@ private void setBuiltInInstrumentation(AgentConfiguration agentConfiguration,
builtInConfigurationBuilder.setJdbcEnabled(XmlParserUtils.getEnabled(XmlParserUtils.getFirst(nodes), JDBC_TAG));

nodes = builtInElement.getElementsByTagName(LOGGING_TAG);
builtInConfigurationBuilder
.setLoggingEnabled(XmlParserUtils.getEnabled(XmlParserUtils.getFirst(nodes), LOGGING_TAG));
builtInConfigurationBuilder.setLoggingEnabled(
XmlParserUtils.getEnabled(XmlParserUtils.getFirst(nodes), LOGGING_TAG),
XmlParserUtils.getStringAttribute(XmlParserUtils.getFirst(nodes), "threshold", "warn"));

nodes = builtInElement.getElementsByTagName(JEDIS_TAG);
Element element = XmlParserUtils.getFirst(nodes);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,17 @@ public static long getLongAttribute(Element element, String attributeName, long
return defaultValue;
}

public static String getStringAttribute(Element element, String attributeName, String defaultValue) {
if (element == null) {
return defaultValue;
}
String strValue = element.getAttribute(attributeName);
if (!Strings.isNullOrEmpty(strValue)) {
return strValue;
}
return defaultValue;
}

public static Long getLong(Element element, String elementName) {
if (element == null) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,44 +17,26 @@ public class TraceLog4j1_2Test extends AiSmokeTest {
@TargetUri("/traceLog4j1_2")
public void testTraceLog4j1_2() {

assertEquals(6, mockedIngestion.getCountForType("MessageData"));
assertEquals(3, mockedIngestion.getCountForType("MessageData"));

MessageData md1 = getTelemetryDataForType(0, "MessageData");
assertEquals("This is log4j1.2 trace.", md1.getMessage());
assertEquals(SeverityLevel.Verbose, md1.getSeverityLevel());
assertEquals("This is log4j1.2 warn.", md1.getMessage());
assertEquals(SeverityLevel.Warning, md1.getSeverityLevel());
assertEquals("Logger", md1.getProperties().get("SourceType"));
assertEquals("TRACE", md1.getProperties().get("LoggingLevel"));
assertEquals("WARN", md1.getProperties().get("LoggingLevel"));


MessageData md2 = getTelemetryDataForType(1, "MessageData");
assertEquals("This is log4j1.2 debug.", md2.getMessage());
assertEquals(SeverityLevel.Verbose, md2.getSeverityLevel());
assertEquals("This is log4j1.2 error.", md2.getMessage());
assertEquals(SeverityLevel.Error, md2.getSeverityLevel());
assertEquals("Logger", md2.getProperties().get("SourceType"));
assertEquals("DEBUG", md2.getProperties().get("LoggingLevel"));
assertEquals("ERROR", md2.getProperties().get("LoggingLevel"));

MessageData md3 = getTelemetryDataForType(2, "MessageData");
assertEquals("This is log4j1.2 info.", md3.getMessage());
assertEquals(SeverityLevel.Information, md3.getSeverityLevel());
assertEquals("This is log4j1.2 fatal.", md3.getMessage());
assertEquals(SeverityLevel.Critical, md3.getSeverityLevel());
assertEquals("Logger", md3.getProperties().get("SourceType"));
assertEquals("INFO", md3.getProperties().get("LoggingLevel"));

MessageData md4 = getTelemetryDataForType(3, "MessageData");
assertEquals("This is log4j1.2 warn.", md4.getMessage());
assertEquals(SeverityLevel.Warning, md4.getSeverityLevel());
assertEquals("Logger", md4.getProperties().get("SourceType"));
assertEquals("WARN", md4.getProperties().get("LoggingLevel"));


MessageData md5 = getTelemetryDataForType(4, "MessageData");
assertEquals("This is log4j1.2 error.", md5.getMessage());
assertEquals(SeverityLevel.Error, md5.getSeverityLevel());
assertEquals("Logger", md5.getProperties().get("SourceType"));
assertEquals("ERROR", md5.getProperties().get("LoggingLevel"));

MessageData md6 = getTelemetryDataForType(5, "MessageData");
assertEquals("This is log4j1.2 fatal.", md6.getMessage());
assertEquals(SeverityLevel.Critical, md6.getSeverityLevel());
assertEquals("Logger", md6.getProperties().get("SourceType"));
assertEquals("FATAL", md6.getProperties().get("LoggingLevel"));
assertEquals("FATAL", md3.getProperties().get("LoggingLevel"));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,44 +17,25 @@ public class TraceLog4j2Test extends AiSmokeTest {
@Test
@TargetUri("/traceLog4j2")
public void testTraceLog4j2() {
assertEquals(6, mockedIngestion.getCountForType("MessageData"));
assertEquals(3, mockedIngestion.getCountForType("MessageData"));

MessageData md1 = getTelemetryDataForType(0, "MessageData");
assertEquals("This is log4j2 trace.", md1.getMessage());
assertEquals(SeverityLevel.Verbose, md1.getSeverityLevel());
assertEquals("This is log4j2 warn.", md1.getMessage());
assertEquals(SeverityLevel.Warning, md1.getSeverityLevel());
assertEquals("Logger", md1.getProperties().get("SourceType"));
assertEquals("TRACE", md1.getProperties().get("LoggingLevel"));
assertEquals("WARN", md1.getProperties().get("LoggingLevel"));

MessageData md2 = getTelemetryDataForType(1, "MessageData");
assertEquals("This is log4j2 debug.", md2.getMessage());
assertEquals(SeverityLevel.Verbose, md2.getSeverityLevel());
assertEquals("This is log4j2 error.", md2.getMessage());
assertEquals(SeverityLevel.Error, md2.getSeverityLevel());
assertEquals("Logger", md2.getProperties().get("SourceType"));
assertEquals("DEBUG", md2.getProperties().get("LoggingLevel"));
assertEquals("ERROR", md2.getProperties().get("LoggingLevel"));

MessageData md3 = getTelemetryDataForType(2, "MessageData");
assertEquals("This is log4j2 info.", md3.getMessage());
assertEquals(SeverityLevel.Information, md3.getSeverityLevel());
assertEquals("This is log4j2 fatal.", md3.getMessage());
assertEquals(SeverityLevel.Critical, md3.getSeverityLevel());
assertEquals("Logger", md3.getProperties().get("SourceType"));
assertEquals("INFO", md3.getProperties().get("LoggingLevel"));

MessageData md4 = getTelemetryDataForType(3, "MessageData");
assertEquals("This is log4j2 warn.", md4.getMessage());
assertEquals(SeverityLevel.Warning, md4.getSeverityLevel());
assertEquals("Logger", md4.getProperties().get("SourceType"));
assertEquals("WARN", md4.getProperties().get("LoggingLevel"));


MessageData md5 = getTelemetryDataForType(4, "MessageData");
assertEquals("This is log4j2 error.", md5.getMessage());
assertEquals(SeverityLevel.Error, md5.getSeverityLevel());
assertEquals("Logger", md5.getProperties().get("SourceType"));
assertEquals("ERROR", md5.getProperties().get("LoggingLevel"));

MessageData md6 = getTelemetryDataForType(5, "MessageData");
assertEquals("This is log4j2 fatal.", md6.getMessage());
assertEquals(SeverityLevel.Critical, md6.getSeverityLevel());
assertEquals("Logger", md6.getProperties().get("SourceType"));
assertEquals("FATAL", md6.getProperties().get("LoggingLevel"));
assertEquals("FATAL", md3.getProperties().get("LoggingLevel"));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,37 +25,19 @@ public void skipJbosseap6AndJbosseap7Image() {
@Test
@TargetUri("/traceLogBack")
public void testTraceLogBack() {
assertEquals(5, mockedIngestion.getCountForType("MessageData"));
assertEquals(2, mockedIngestion.getCountForType("MessageData"));

MessageData md1 = getTelemetryDataForType(0, "MessageData");
assertEquals("This is logback trace.", md1.getMessage());
assertEquals(SeverityLevel.Verbose, md1.getSeverityLevel());
assertEquals("This is logback warn.", md1.getMessage());
assertEquals(SeverityLevel.Warning, md1.getSeverityLevel());
assertEquals("Logger", md1.getProperties().get("SourceType"));
assertEquals("TRACE", md1.getProperties().get("LoggingLevel"));
assertEquals("WARN", md1.getProperties().get("LoggingLevel"));

MessageData md2 = getTelemetryDataForType(1, "MessageData");
assertEquals("This is logback debug.", md2.getMessage());
assertEquals(SeverityLevel.Verbose, md2.getSeverityLevel());
assertEquals("This is logback error.", md2.getMessage());
assertEquals(SeverityLevel.Error, md2.getSeverityLevel());
assertEquals("Logger", md2.getProperties().get("SourceType"));
assertEquals("DEBUG", md2.getProperties().get("LoggingLevel"));

MessageData md3 = getTelemetryDataForType(2, "MessageData");
assertEquals("This is logback info.", md3.getMessage());
assertEquals(SeverityLevel.Information, md3.getSeverityLevel());
assertEquals("Logger", md3.getProperties().get("SourceType"));
assertEquals("INFO", md3.getProperties().get("LoggingLevel"));

MessageData md4 = getTelemetryDataForType(3, "MessageData");
assertEquals("This is logback warn.", md4.getMessage());
assertEquals(SeverityLevel.Warning, md4.getSeverityLevel());
assertEquals("Logger", md4.getProperties().get("SourceType"));
assertEquals("WARN", md4.getProperties().get("LoggingLevel"));

MessageData md5 = getTelemetryDataForType(4, "MessageData");
assertEquals("This is logback error.", md5.getMessage());
assertEquals(SeverityLevel.Error, md5.getSeverityLevel());
assertEquals("Logger", md5.getProperties().get("SourceType"));
assertEquals("ERROR", md5.getProperties().get("LoggingLevel"));
assertEquals("ERROR", md2.getProperties().get("LoggingLevel"));
}

@Test
Expand Down

0 comments on commit 1458676

Please sign in to comment.