Skip to content

Commit

Permalink
Merge pull request #41 from rshivane/master
Browse files Browse the repository at this point in the history
Improvements to error fingerprinting
  • Loading branch information
rshivane authored Dec 12, 2018
2 parents 7d890a6 + 051c96c commit 27ad6fd
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@ public void appendersCalled(LogEvent event) {
}

public void beforeLogMessage(Object[] params) {
if (params == null || params.length < 6 || !(params[5] instanceof Throwable)) {
if (ThreadContext.containsKey(LogEventTracker.FINGERPRINT_PROPERTY_NAME)) {
return;
}
if (ThreadContext.containsKey(LogEventTracker.FINGERPRINT_PROPERTY_NAME)) {
if (!(params[5] instanceof Throwable)) {
return;
}
Throwable throwable = (Throwable) params[5];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ CLASS org.apache.logging.log4j.spi.AbstractLogger
METHOD logMessage
HELPER ai.apptuit.metrics.jinsight.modules.log4j2.Log4J2RuleHelper
AT ENTRY
IF TRUE
IF $# GE 5
DO beforeLogMessage($*)
ENDRULE

Expand All @@ -37,7 +37,7 @@ CLASS org.apache.logging.log4j.spi.AbstractLogger
METHOD logMessage
HELPER ai.apptuit.metrics.jinsight.modules.log4j2.Log4J2RuleHelper
AT EXIT
IF TRUE
IF $# GE 5
DO afterLogMessage($*)
ENDRULE

Expand All @@ -46,7 +46,7 @@ CLASS org.apache.logging.log4j.spi.AbstractLogger
METHOD logMessage
HELPER ai.apptuit.metrics.jinsight.modules.log4j2.Log4J2RuleHelper
AT EXCEPTION EXIT
IF TRUE
IF $# GE 5
DO afterLogMessage($*)
ENDRULE

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.IThrowableProxy;
import org.jboss.byteman.rule.Rule;
import org.slf4j.MDC;

/**
* @author Rajiv Shivane
Expand All @@ -43,23 +42,17 @@ public void appendersCalled(ILoggingEvent event) {
tracker.track(level, (throwableProxy != null), throwable, fingerprint);
}

public void beforeBuildEvent(Throwable throwable) {
if (throwable == null) {
return;
}
public String beforeBuildEvent(Throwable throwable) {
ErrorFingerprint fingerprint = ErrorFingerprint.fromThrowable(throwable);
if (fingerprint != null) {
CURRENT_FINGERPRINT.set(fingerprint);
MDC.put(LogEventTracker.FINGERPRINT_PROPERTY_NAME, fingerprint.getChecksum());
return fingerprint.getChecksum();
}
return null;
}

public void afterBuildEvent(Throwable throwable) {
if (throwable == null) {
return;
}
CURRENT_FINGERPRINT.remove();
MDC.remove(LogEventTracker.FINGERPRINT_PROPERTY_NAME);
}

public String convertMessage(ILoggingEvent event, String origMessage) {
Expand All @@ -69,5 +62,4 @@ public String convertMessage(ILoggingEvent event, String origMessage) {
}
return "[error:" + fingerprint + "] " + origMessage;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -28,26 +28,28 @@ CLASS ch.qos.logback.classic.Logger
METHOD buildLoggingEventAndAppend
HELPER ai.apptuit.metrics.jinsight.modules.logback.LogbackRuleHelper
AT ENTRY
IF TRUE
DO beforeBuildEvent($6)
IF $6 != null
DO org.slf4j.MDC.put(ai.apptuit.metrics.jinsight.modules.logback.LogEventTracker.FINGERPRINT_PROPERTY_NAME, beforeBuildEvent($6))
ENDRULE

RULE Logback Logger buildLoggingEventAndAppend exit
CLASS ch.qos.logback.classic.Logger
METHOD buildLoggingEventAndAppend
HELPER ai.apptuit.metrics.jinsight.modules.logback.LogbackRuleHelper
AT EXIT
IF TRUE
DO afterBuildEvent($6)
IF $6 != null
DO afterBuildEvent($6);
org.slf4j.MDC.remove(ai.apptuit.metrics.jinsight.modules.logback.LogEventTracker.FINGERPRINT_PROPERTY_NAME)
ENDRULE

RULE Logback Logger buildLoggingEventAndAppend exception exit
CLASS ch.qos.logback.classic.Logger
METHOD buildLoggingEventAndAppend
HELPER ai.apptuit.metrics.jinsight.modules.logback.LogbackRuleHelper
AT EXCEPTION EXIT
IF TRUE
DO afterBuildEvent($6)
IF $6 != null
DO afterBuildEvent($6);
org.slf4j.MDC.remove(ai.apptuit.metrics.jinsight.modules.logback.LogEventTracker.FINGERPRINT_PROPERTY_NAME)
ENDRULE

RULE Logback MessageConverter convert exit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,7 @@ private Logger getLogger(String loggerName) {
logEncoder.setPattern("%-12date{YYYY-MM-dd HH:mm:ss.SSS} %-5level - %msg%n");
logEncoder.start();

testAppender = new TestAppender(logCtx);
testAppender.setEncoder(logEncoder);
testAppender = new TestAppender(logCtx, logEncoder);
testAppender.start();

Logger log = logCtx.getLogger(loggerName);
Expand Down Expand Up @@ -221,10 +220,11 @@ private static class TestAppender extends OutputStreamAppender<ILoggingEvent> {
private ByteArrayOutputStream logBuffer = new ByteArrayOutputStream();
private String fingerprint;

public TestAppender(LoggerContext logCtx) {
public TestAppender(LoggerContext logCtx, PatternLayoutEncoder logEncoder) {
super();
setContext(logCtx);
setName("test");
setEncoder(logEncoder);
setOutputStream(logBuffer);
}

Expand Down

0 comments on commit 27ad6fd

Please sign in to comment.