本文为您介绍如何使用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));
 }
}