1.增加异常忽略逻辑,可以根据制定情况忽略制定的Exception列表。多个Exception可以使用逗号分隔。需要配置异常全名
This commit is contained in:
parent
8ec5d16de3
commit
e5188c990f
|
|
@ -1,7 +1,7 @@
|
|||
#skyWalking用户ID +++++
|
||||
#skyWalking用户ID
|
||||
skywalking.user_id=123
|
||||
#skyWalking应用ID +++++
|
||||
skywalking.application_id=test
|
||||
#skyWalking应用ID
|
||||
skywalking.application_code=test
|
||||
|
||||
#是否打印数据
|
||||
buriedpoint.printf=false
|
||||
|
|
@ -18,7 +18,7 @@ sender.servers_addr=127.0.0.1:34000
|
|||
sender.max_copy_num=2
|
||||
#发送的最大长度
|
||||
sender.max_send_length=20000
|
||||
#当没有Sender时,尝试获取sender的等待周期 +++++
|
||||
#当没有Sender时,尝试获取sender的等待周期
|
||||
sender.retry_get_sender_wait_interval=2000
|
||||
#是否开启发送消息
|
||||
sender.is_off=false
|
||||
|
|
@ -28,7 +28,7 @@ sender.is_off=false
|
|||
consumer.max_consumer=2
|
||||
#消费者最大等待时间
|
||||
consumer.max_wait_time=5
|
||||
#发送失败等待时间 +++++++
|
||||
#发送失败等待时间
|
||||
consumer.consumer_fail_retry_wait_interval=50
|
||||
|
||||
#每个Buffer的最大个数
|
||||
|
|
@ -36,6 +36,6 @@ buffer.buffer_max_size=18000
|
|||
#Buffer池的最大长度
|
||||
buffer.pool_size=5
|
||||
|
||||
#发送检查线程检查周期 ++++++++
|
||||
#发送检查线程检查周期
|
||||
senderchecker.check_polling_time=200
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
package com.ai.cloud.skywalking.buriedpoint;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import static com.ai.cloud.skywalking.conf.Config.BuriedPoint.EXCLUSIVE_EXCEPTIONS;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.ai.cloud.skywalking.api.IExceptionHandler;
|
||||
import com.ai.cloud.skywalking.conf.Config;
|
||||
|
|
@ -9,22 +11,25 @@ import com.ai.cloud.skywalking.context.Context;
|
|||
import com.ai.cloud.skywalking.protocol.Span;
|
||||
|
||||
public class ApplicationExceptionHandler implements IExceptionHandler {
|
||||
private static Boolean isExclusiveExceptionListInit = false;
|
||||
|
||||
private static List<String> exclusiveExceptionList = new ArrayList<String>();
|
||||
private static String EXCEPTION_SPLIT = ",";
|
||||
|
||||
private static Set<String> exclusiveExceptionSet = null;
|
||||
|
||||
@Override
|
||||
public void handleException(Throwable th) {
|
||||
if (isExclusiveExceptionListInit == false)
|
||||
synchronized (isExclusiveExceptionListInit) {
|
||||
if (isExclusiveExceptionListInit == false) {
|
||||
|
||||
isExclusiveExceptionListInit = true;
|
||||
}
|
||||
if (exclusiveExceptionSet == null) {
|
||||
Set<String> exclusiveExceptions = new HashSet<String>();
|
||||
|
||||
String[] exceptions = EXCLUSIVE_EXCEPTIONS.split(EXCEPTION_SPLIT);
|
||||
for(String exception : exceptions){
|
||||
exclusiveExceptions.add(exception);
|
||||
}
|
||||
exclusiveExceptionSet = exclusiveExceptions;
|
||||
}
|
||||
|
||||
Span span = Context.getLastSpan();
|
||||
span.handleException(th, exclusiveExceptionList, Config.BuriedPoint.MAX_EXCEPTION_STACK_LENGTH);
|
||||
span.handleException(th, exclusiveExceptionSet,
|
||||
Config.BuriedPoint.MAX_EXCEPTION_STACK_LENGTH);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ public class Config {
|
|||
// Business Key 最大长度
|
||||
public static int BUSINESSKEY_MAX_LENGTH = 300;
|
||||
|
||||
// 使用逗号分离
|
||||
public static String EXCLUSIVE_EXCEPTIONS = "";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,7 @@ package com.ai.cloud.skywalking.protocol;
|
|||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
|
|
@ -137,24 +136,35 @@ public class Span extends SpanData {
|
|||
return str != null && str.length() > 0;
|
||||
}
|
||||
|
||||
public void handleException(Throwable e,
|
||||
List<String> exclusiveExceptionList, int maxExceptionStackLength) {
|
||||
this.statusCode = 1;
|
||||
ByteArrayOutputStream buf = new ByteArrayOutputStream();
|
||||
public void handleException(Throwable e, Set<String> exclusiveExceptionSet,
|
||||
int maxExceptionStackLength) {
|
||||
ByteArrayOutputStream buf = null;
|
||||
StringBuilder expMessage = new StringBuilder();
|
||||
Throwable causeException = e;
|
||||
while (causeException != null
|
||||
&& (causeException.getCause() != null || expMessage.length() < maxExceptionStackLength)) {
|
||||
causeException.printStackTrace(new java.io.PrintWriter(buf, true));
|
||||
expMessage.append(buf.toString());
|
||||
causeException = causeException.getCause();
|
||||
}
|
||||
try {
|
||||
buf.close();
|
||||
} catch (IOException e1) {
|
||||
logger.log(Level.ALL, "Close exception stack input stream failed");
|
||||
buf = new ByteArrayOutputStream();
|
||||
Throwable causeException = e;
|
||||
while (causeException != null
|
||||
&& (causeException.getCause() != null || expMessage
|
||||
.length() < maxExceptionStackLength)) {
|
||||
causeException.printStackTrace(new java.io.PrintWriter(buf,
|
||||
true));
|
||||
expMessage.append(buf.toString());
|
||||
causeException = causeException.getCause();
|
||||
}
|
||||
|
||||
} finally {
|
||||
try {
|
||||
buf.close();
|
||||
} catch (IOException ioe) {
|
||||
logger.log(Level.ALL,
|
||||
"Close exception stack input stream failed", ioe);
|
||||
}
|
||||
}
|
||||
this.exceptionStack = expMessage.toString();
|
||||
|
||||
if (!exclusiveExceptionSet.contains(e.getClass().getName())) {
|
||||
this.statusCode = 1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue