示例#1
0
  private void setupTraceLog(HttpContext httpContext, String queue, AccessLog accessLog)
      throws IOException {
    String clientIp = httpContext.getClientIp();
    // DBへのアクセスログ採取有無
    if (!isLogging(clientIp, "accessDb." + queue)) {
      return;
    }
    // DBに記録する
    accessLog.insert();
    // リクエストStreamのpeek処理
    if (isLogging(clientIp, "accessTrace.request." + queue)) {
      PeekStream requestPeeker = accessLog.setupPeekRequest();
      httpContext.peekRequest(requestPeeker);
      context.enque(requestPeeker, Config.QUEUE_PEEK);

      // 既に受け取っているヘッダ部分をPeekStreamに流し込む
      HttpParser requestParser = httpContext.getRequestParser();
      OutputStream os = requestPeeker.getPeekOutputStream();
      requestParser.writeSeriarizeHeader(os);
    }
    // レスポンスStreamのpeek処理
    if (isLogging(clientIp, "accessTrace.response." + queue)) {
      PeekStream responsePeeker = accessLog.setupPeekResponse();
      httpContext.peekResponse(responsePeeker);
      context.enque(responsePeeker, Config.QUEUE_PEEK);
    }
  }