[GitHub] [rocketmq-eventbridge] 2011shenlin commented on a diff in pull request #36: add access log

2022-10-17 Thread GitBox


2011shenlin commented on code in PR #36:
URL: 
https://github.com/apache/rocketmq-eventbridge/pull/36#discussion_r997645398


##
start/src/main/java/org/apache/rocketmq/eventbridge/filter/LoginFilter.java:
##
@@ -16,48 +16,75 @@
   */
  package org.apache.rocketmq.eventbridge.filter;
 
- import java.util.List;
-
- import lombok.extern.slf4j.Slf4j;
+ import com.google.gson.Gson;
  import org.apache.rocketmq.eventbridge.exception.EventBridgeException;
  import org.apache.rocketmq.eventbridge.exception.code.DefaultErrorCode;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
  import org.springframework.core.annotation.Order;
- import org.springframework.http.server.reactive.ServerHttpRequest;
+ import org.springframework.core.io.buffer.DataBuffer;
+ import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
  import org.springframework.stereotype.Component;
  import org.springframework.web.server.ServerWebExchange;
  import org.springframework.web.server.WebFilter;
  import org.springframework.web.server.WebFilterChain;
+ import reactor.core.publisher.Flux;
  import reactor.core.publisher.Mono;
 
+ import java.io.ByteArrayOutputStream;
+ import java.io.IOException;
+ import java.nio.channels.Channels;
+ import java.nio.charset.StandardCharsets;
+ import java.util.List;
+
  @Component
  @Order(value = 2)
- @Slf4j
  public class LoginFilter implements WebFilter {
 
+ private static final Logger log = LoggerFactory.getLogger("accessLog");
+
  public static final String HEADER_KEY_LOGIN_ACCOUNT_ID = "loginAccountId";
  public static final String HEADER_KEY_PARENT_ACCOUNT_ID = 
"parentAccountId";
  public static final String HEADER_KEY_RESOURCE_OWNER_ACCOUNT_ID = 
"resourceOwnerAccountId";
 
  @Override
  public Mono filter(ServerWebExchange exchange, WebFilterChain 
chain) {
- ServerHttpRequest request = exchange.getRequest();
- return chain.filter(exchange)
- .subscriberContext(ctx -> {
- List parentAccountIds = request.getHeaders()
+ ServerHttpRequestDecorator accessPermissionDecorator = new 
ServerHttpRequestDecorator(exchange.getRequest()) {
+ @Override
+ public Flux getBody() {
+ return super.getBody().doOnNext(dataBuffer -> {
+ try {
+ ByteArrayOutputStream byteArrayOutputStream = new 
ByteArrayOutputStream();
+ 
Channels.newChannel(byteArrayOutputStream).write(dataBuffer.asByteBuffer().asReadOnlyBuffer());
+ String requestBody = new 
String(byteArrayOutputStream.toByteArray(), StandardCharsets.UTF_8);
+ log.info("url : {} | requestParam : {} | 
requestMethod : {} | requestBody : {}",
+ exchange.getRequest().getURI(),
+ exchange.getRequest().getQueryParams(),
+ exchange.getRequest().getMethodValue(),

Review Comment:
   It is not recommended to  put access logs and login in one filter



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@rocketmq.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



[GitHub] [rocketmq-eventbridge] 2011shenlin commented on a diff in pull request #36: add access log

2022-10-16 Thread GitBox


2011shenlin commented on code in PR #36:
URL: 
https://github.com/apache/rocketmq-eventbridge/pull/36#discussion_r996552994


##
adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/handler/WebLogAspect.java:
##
@@ -18,35 +18,45 @@
 package org.apache.rocketmq.eventbridge.adapter.api.handler;
 
 import com.google.gson.Gson;
-import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Pointcut;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
+import reactor.core.publisher.Mono;
+
+import java.util.Objects;
 
-@Slf4j
 @Aspect
 @Component
 public class WebLogAspect {
 
+private static final Logger log = LoggerFactory.getLogger("accessLog");
+
 
@Pointcut("@annotation(org.apache.rocketmq.eventbridge.adapter.api.annotations.WebLog)")
 public void webLog() {
 
 }
 
 @Around("webLog()")

Review Comment:
   Annotations are not recommended for access logs, and unmarked requests 
should also have access logs.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@rocketmq.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org