public static Object doAround(ProceedingJoinPoint joinPoint, OperationLog operationLog) throws Throwable {
        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
        if (requestAttributes == null) {
            return joinPoint.proceed();
        }

        HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
        UserInfo userInfo = Optional.ofNullable(LoginUserUtils.getLoginUser()).orElseGet(UserInfo::new);
        String operator = userInfo.getName();
        operator = StringUtils.isBlank(operator) ? ANONYMOUS_USER : operator;

        String requestUrl = request.getRequestURI();
        String httpMethod = request.getMethod();
        String remoteAddress = NetworkUtils.getClientIpAddress(request);
        Object[] args = joinPoint.getArgs();
        String groupId = "";
        String streamId = "";
        for (Object arg : args) {
            try {
                JSONObject obj = (JSONObject) JSON.toJSON(arg);
                for (String key : obj.keySet()) {
                    if (Objects.equals(key, INLONG_GROUP_ID)) {
                        groupId = obj.getString(key);
                    }
                    if (Objects.equals(key, INLONG_STREAM_ID)) {
                        streamId = obj.getString(key);
                    }
                }
            } catch (Exception ignored) {
                log.debug("do nothing when exception");
            }

        }
        String param = GSON.toJson(request.getParameterMap());
        String body = GSON.toJson(joinPoint.getArgs());

        long start = System.currentTimeMillis();
        boolean success = true;
        String errMsg = "";
        try {
            return joinPoint.proceed();
        } catch (Throwable throwable) {
            success = false;
            errMsg = throwable.getMessage();
            throw throwable;
        } finally {
            long costTime = System.currentTimeMillis() - start;
            OperationType operationType = operationLog.operation();
            OperationTarget operationTarget = operationLog.operationTarget();
            OperationLogEntity operationLogEntity = new OperationLogEntity();
            operationLogEntity.setInlongGroupId(groupId);
            operationLogEntity.setInlongStreamId(streamId);
            operationLogEntity.setOperationTarget(operationTarget.name());
            operationLogEntity.setOperationType(operationType.name());
            operationLogEntity.setHttpMethod(httpMethod);
            operationLogEntity.setOperator(operator);
            operationLogEntity.setRequestUrl(requestUrl);
            operationLogEntity.setRemoteAddress(remoteAddress);
            operationLogEntity.setCostTime(costTime);
            operationLogEntity.setBody(body);
            operationLogEntity.setParam(param);
            operationLogEntity.setStatus(success);
            operationLogEntity.setRequestTime(new Date());
            operationLogEntity.setErrMsg(errMsg);

            if (operationLog.db()) {
                OperationLogPool.publish(operationLogEntity);
            } else if (success) {
                log.info("operation log: {}", GSON.toJson(operationLogEntity));
            } else {
                log.error("request handle failed : {}", GSON.toJson(operationLogEntity));
            }
        }
    }
Save operation logs of all Controller
inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/operationlog/OperationLogRecorder.java