FrontendLogController.java

  1. package no.nav.data.common.web;


  2. import io.swagger.v3.oas.annotations.Operation;
  3. import io.swagger.v3.oas.annotations.responses.ApiResponse;
  4. import io.swagger.v3.oas.annotations.responses.ApiResponses;
  5. import io.swagger.v3.oas.annotations.tags.Tag;
  6. import lombok.AllArgsConstructor;
  7. import lombok.Builder;
  8. import lombok.Data;
  9. import lombok.NoArgsConstructor;
  10. import lombok.extern.slf4j.Slf4j;
  11. import no.nav.data.common.utils.JsonUtils;
  12. import org.springframework.web.bind.annotation.PostMapping;
  13. import org.springframework.web.bind.annotation.RequestBody;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.RestController;

  16. @Slf4j
  17. @RestController
  18. @Tag(description = "Polly frontend logging", name = "Logging")
  19. @RequestMapping("/frontendlog")
  20. public class FrontendLogController {

  21.     @Operation(summary = "Write log")
  22.     @ApiResponses(value = {@ApiResponse(description = "Log written")})
  23.     @PostMapping
  24.     public void write(@RequestBody LogRequest request) {
  25.         var string = JsonUtils.toJson(request);
  26.         switch (request.level) {
  27.             case info -> log.info(string);
  28.             case warn -> log.warn(string);
  29.             case error -> log.error(string);
  30.         }
  31.     }

  32.     @Data
  33.     @Builder
  34.     @NoArgsConstructor
  35.     @AllArgsConstructor
  36.     public static class LogRequest {

  37.         public enum Level {info, warn, error}

  38.         private Level level;
  39.         private String context;
  40.         private String content;

  41.     }

  42. }