본문 바로가기

프로그래밍/Java

(18)
logback 필터 - 쓰레드명 혹은 특정 내용만 필터링하기 (로그백 커스텀 필터 구현) 로그백 커스텀 필터를 만들어주세요 맡고 있는 여러 시스템 중 하나는 jdbc.sqlonly를 INFO 레벨로 설정하고 있다. jdbc.sqlonly를 INFO레벨로 하면 파라미터가 바인딩 된 쿼리 전문이 남아서 로그양이 꽤 되지만, 장애 발생시 문제 파악을 위해 운영에서도 INFO 레벨로 설정하는 경우가 꽤 있다. 그런데 스케줄러에서 실행되는 쿼리가 1분마다 찍히고 있어서 운영하는 측에서 수정 요청이 들어왔다. 스케줄은 스프링 @Scheduled 어노테이션을 사용하여 구현하였고 별도의 커스텀 TaskScheduler를 정의하지 않았으므로 poolScheduler라는 prefix가 들어간다. 이에, Thread 이름으로 필터링을 하고자 시도하였다. 그런데 당연히 기본 기능으로 그런 필터링 기능이 제공될 줄..
Spring 로그백 RollingFileAppender와 AsyncAppender 차이, logback-spring.xml 설정 예시 이번에 마무리 지어가는 시스템에서 로그 설정 관련 요청이 들어와 로그백의 RollingFileAppender와 AsyncAppender에 대해 정리해보았습니다. 로그백이 뭔가요? 로그백(Logback)은 자바 언어로 작성된 로깅 프레임워크입니다. 로그백에서는 RollingFileAppender와 AsyncAppender 두 가지 로그 기능을 제공합니다. RollingFileAppender RollingFileAppender는 로그 파일을 일정 크기나 기간에 따라 자동으로 분리해서 저장할 수 있는 기능을 제공합니다. 예를 들어, 로그 파일의 크기가 10MB를 넘어가면 새로운 파일을 생성하고 이전 파일에 대한 백업을 생성할 수 있습니다. 이러한 방식으로 로그 파일이 계속해서 늘어나는 것을 방지하고, 필요한 ..
No thread-bound request found No thread-bound request found 오류 RequestContextHolder에서 request를 가져오려는데 다음과 같은 오류가 발생했다. HttpServletRequest httpServletRequest = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the o..
ajax 에러 json 메세지 받기 (Spring Security, axios) 처음에는 다음처럼 코드를 작성했는데 프론트에서 메시지가 안 받아졌다. 알고보니 그냥 직접 write 해주니까 됐다. response.sendError(401, JsonUtil.toJson(errorResponseMap)); 순서 FailureHandler를 구현한다. FailureHandler에서 exception 내용을 보고 적절한 응답 메시지를 만든다. response에 ContentType을 json으로 설정하고 직접 write 한다. 예 FailureHandler를 구현한 다음 다음처럼 response에 바로 써주면 된다. response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.setContentType("application/json..
Oracle/JDBC 해당 위치에 지원되지 않는 SQL92 토큰: 43 오류 해당 위치에 지원되지 않는 SQL92 토큰: 43 해결 오타가 있는 것이다. 내 경우에는 INSERT INTO 테이블명 (...) VALUES (...)를 INSERT INTO 테이블명 {...} VALUES {...}로 써서 오타가 났다 ㅠㅠ
JSTL: 서버단 코딩 없이 네이버 블로그 RSS로 포스트 목록 가져오기 문제 모 브랜드를 사이트를 개발하여 그 회사에서 운영하는 네이버 블로그를 읽어올 일이 생겼다. JSTL로 아주 간단하게 RSS를 읽어서 목록을 가져올 수 있었다. 순서 JSP 상단에 JSTL XML 태그라이브러리를 추가한다. 로 RSS를 읽어 변수에 담는다. 로 해당 xml을 파싱하여 변수에 담는다. 로 item을 반복하여 출력한다. 코드 네이버 블로그팀 목록을 가져와본 코드이다. 제목 날짜 결과 날짜 역시 JSTL 로 파싱하여 쓰면 된다.
JSP 에러 - TLD 또는 태그 파일 내의 attribute 지시어에 의하면 ~ 어떤 표현식도 받아들이지 않습니다. 오류 JSTL로 XML을 파싱하는데 다음과 같은 오류가 났다. TLD 또는 태그 파일 내의 attribute 지시어에 의하면, 속성 [xml]은(는) 어떤 표현식도 받아들이지 않습니다. JSP 상단에 다음과 같이 태그 라이브러리를 선언하였지만 계속 오류가 발생했다. 해결 태그 라이브러리 주소를 다음처럼 /jsp를 추가하여 바꾼다. 잘된다.
jQuery ajax - REST API 호출 시 HTTP 200에서 에러나는 경우 (HTTP 204) keywords: java, spring, rest controller, rest api, jquery ajax 오류 jQuery ajax로 REST API를 호출하여 정상적으로 저장 다 되고 HTTP 200을 리턴했는데 화면단에서 오류가 났다. $.ajax({ type: 'post' // ... 어쩌고저쩌고 }).done(function(){ console.log('success'); }).fail(function(jqXhr){ console.error(jqXhr); }); 컨트롤러에서는 이렇다. @PostMapping("/set-password") public ResponseEntity setPassword(@RequestBody Map payload) throws Exc..