本文为您介绍如何使用MaxCompute Java SDK输出错误日志。
接口说明
MaxCompute Java SDK提供了抽象类RetryLogger,详情请参见SDK Java Doc。
public static abstract class RetryLogger {
/**
* 当RestClient发生重试前的回调函数
* @param e
* 错误异常
* @param retryCount
* 重试计数
* @param retrySleepTime
* 下次需要的重试时间
*/
public abstract void onRetryLog(Throwable e, long retryCount, long retrySleepTime);
}
您只需实现一个自己的RetryLogger子类,再在初始化ODPS对象时使用odps.getRestClient().setRetryLogger(new UserRetryLogger());
进行日志输出。
示例
// init odps
odps.getRestClient().setRetryLogger(new UserRetryLogger());
// your retry logger
public class UserRetryLogger extends RetryLogger {
@Override
public void onRetryLog(Throwable e, long retryCount, long sleepTime) {
if (e != null && e instanceof OdpsException) {
String requestId = ((OdpsException) e).getRequestId();
if (requestId != null) {
System.err.println(String.format(
"Warning: ODPS request failed, requestID:%s, retryCount:%d, will retry in %d seconds.", requestId, retryCount, sleepTime));
return;
}
}
System.err.println(String.format(
"Warning: ODPS request failed:%s, retryCount:%d, will retry in %d seconds.", e.getMessage(), retryCount, sleepTime));
}
}