기본 콘텐츠로 건너뛰기

라벨이 spring인 게시물 표시

SLF4J + Log4j2 + Log4jdbc 통합 설정 가이드: Spring/JAVA SQL 로깅 완전 정리

SLF4J + Log4j2 + Log4jdbc 통합 설정 가이드: Spring/JAVA SQL 로깅 완전 정리 AI 생성 이미지: SLF4J + Log4j2 + Log4jdbc 통합 설정 가이드: Spring/JAVA SQL 로깅 완전 정리 현대의 Java / Spring 애플리케이션에서는 로그를 일관되게 수집하고 분석하는 것이 매우 중요합니다. SLF4J를 로깅 추상화 계층으로 쓰고 Log4j2를 실제 구현체로 연결하면 안정적이고 확장성 있는 로깅 체계를 구축할 수 있습니다. 또한 Log4jdbc를 함께 사용하면 JDBC 레벨에서 실행된 SQL과 바인딩 값, 실행 시간을 손쉽게 캡처할 수 있습니다. 이 문서에서는 SLF4J + Log4j2 + Log4jdbc 통합 설정 가이드: Spring/JAVA SQL 로깅 완전 정리 라는 목표로, Maven 의존성, log4j2 구성 파일, 그리고 DataSource 적용 방법을 실제 예제와 함께 단계별로 설명합니다. 운영 환경과 개발 환경 모두에서 활용할 수 있도록 실용적인 팁도 포함했습니다. 📚 목차 1. Maven 의존성 설정 (pom.xml) 2. Log4j2 설정 (log4j2.xml) 3. DataSource에 Log4jdbc 적용하기 4. 마무리 및 활용 팁 1. 📦 Maven 의존성 설정 (pom.xml) 먼저 Maven 프로젝트에 필요한 라이브러리를 추가해야 합니다. ...

java.lang.ClassNotFoundException: ContextLoaderListener 에러 해결 방법 (Eclipse + Tomcat)

[Spring] java.lang.ClassNotFoundException: ContextLoaderListener 에러 해결 완벽 가이드 작성일: 2025. 12. 10 | 분류: Java/Spring Framework Spring MVC 프로젝트를 Eclipse와 Tomcat 환경에서 배포하다 보면 종종 마주치는 악명 높은 에러가 있습니다. 로컬 테스트(Unit Test)에서는 잘 돌아가는데, 서버를 띄우면 갑자기 404 혹은 500 에러와 함께 콘솔에 다음 로그가 찍히는 경우입니다. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:xxx) ... 이 에러가 발생하면 스프링 컨텍스트가 로드되지 않아 아무런 페이지도 뜨지 않습니다. 이 글에서는 이 에러의 정확한 원인과, Eclipse Deployment Assembly 설정 을 중심으로 한 가장 확실한 해결 방법을 정리합니다. 1. 에러의 원인: "배포된 곳에 파일이 없다" 이 예외(Exception)의 의미는 아주 단순합니다. ⚠️ 문제 상황 Tomcat이 구동되면서 web.xml 을 읽고 리스너를 실행하려는데, org.springframework.web.context.ContextLoaderListener 클래스 파일을 찾을 수 없다는 뜻입니다. 분명히 프로젝트에는 Spring 라이브러리가 추가되어 있는데 왜 못 찾는 걸까요? 원인은 "이클립...

[Spring Security] SecurityContext로 강제 로그인 처리하기 (SSO·백오피스 연동 팁)

[Spring Security] SecurityContext로 강제로 로그인 처리하기 (SSO·백오피스 연동) [Spring Security] SecurityContext로 강제로 로그인 처리하기 (SSO·백오피스 연동) 내부 시스템이나 SSO 연동 , 또는 이미 별도 인증 과정을 거친 뒤 Spring Security 세션만 강제로 만들어야 하는 상황 이 종종 있습니다. 이 글에서는 SecurityContext 와 UsernamePasswordAuthenticationToken 을 사용해 프로그램적으로 로그인(강제 로그인) 처리 하는 방법을 예제와 함께 정리합니다. 1. 왜 강제 로그인(프로그램 로그인)이 필요할까? 대표적인 사용 시나리오는 다음과 같습니다. 사내 SSO 서버에서 이미 인증을 완료했고, 결과로 내려온 ID로만 Spring Security 컨텍스트를 세팅 하고 싶을 때 별도 로그인 페이지 없이, 백오피스·관리자 화면에서 바로 내부 계정으로 진입 시켜야 할 때 테스트·운영 도구 등에서 특정 계정으로 자동 로그인 이 필요할 때 ⚠️ 단, 이런 강제 로그인은 보안적으로 매우 주의 해야 합니다. 외부에서 이 로직에 접근할 수 없도록 IP 제한, 별도 권한 체크, 토큰 검증 등을 반드시 거쳐야 합니다. 2. 기존 강제 로그인 코드 이해하기 질문에서 주신 예제 코드를 조금 다듬어서 먼저 살펴보겠습니다. 2-1. 예제 코드 SecurityContext securityContext = SecurityContextHolder.getContext(); UsernamePasswordAuthenticationToken result = null; List<Gra...

BeanFinder for Spring

SPRING FRAMEWORK Spring Context 외부에서 Bean 주입받기: ServletContext와 BeanFinder 유틸리티 Filter, Listener, 혹은 레거시 코드 등 Spring 컨테이너의 제어를 받지 않는 곳에서 스프링 빈(Bean)을 사용해야 할 때가 있습니다. ServletContext를 활용해 ApplicationContext에 접근하고 빈을 동적으로 조회하는 BeanFinder 유틸리티 구현 방법을 알아봅니다. 📑 목차 1. 문제 상황: Spring 관리 영역 밖에서의 빈 접근 2. 핵심 구현: BeanFinder 유틸리티 클래스 3. 주요 로직 상세 분석 4. 실무 활용 시나리오 1. 문제 상황: Spring 관리 영역 밖에서의 빈 접근 Spring MVC 패턴 안에서는 @Autowired 나 생성자 주입을 통해 손쉽게 빈을 사용할 수 있습니다. 하지만 서블릿 필터(Filter), 리스너(Listener), 또는 일반 POJO 클래스에서는 이러한 자동 주입(DI)이 동작하지 않습니다. 이러한 상황에서는 ServletContext 를 통해 Spring의 루트 컨테이너인 WebApplicationContext 를 직접 찾아내고, 필요한 빈을 수동으로 꺼내오는 전략이 필요합니다. 2. 핵심 구현: BeanFinder 유틸리티 클래스 아래 코드는 WebApplicationContextUtils 를 사용하여 컨텍스트에 접근하고, ID 또는 Class 타입을 기반으로 빈을 검색하는 유틸리티 클래스입니다. import javax.servlet.ServletContext; import org.springframework...

Spring SQL 로깅 완벽 가이드: Log4j2와 Log4jdbc로 가독성 극대화하기

BACKEND / SPRING Spring SQL 로깅 완벽 가이드: Log4j2와 Log4jdbc로 가독성 극대화하기 Spring 개발 중 '?'로 표시되는 쿼리 파라미터 때문에 답답하셨나요? Log4jdbc를 연동하여 SQL 실행 로그를 깔끔하게 정복하는 방법을 소개합니다. 📑 목차 1. 왜 Log4jdbc를 도입해야 할까? 2. Maven 의존성 추가 (pom.xml) 3. Log4j2 로거 설정 (log4j2.xml) 4. DataSource 프록시 및 포맷터 설정 5. 실전 운영 및 성능 최적화 팁 1. 왜 Log4jdbc를 도입해야 할까? Spring의 기본 JDBC 로깅을 사용하면 SQL 파라미터가 ?(물음표) 로 마스킹되어 출력됩니다. 이로 인해 실제 어떤 값이 쿼리에 바인딩되었는지 확인하기 어렵고, 긴 쿼리가 한 줄로 출력되어 가독성이 현저히 떨어집니다. log4jdbc-log4j2 를 프로젝트에 적용하면 다음과 같은 강력한 디버깅 환경을 구축할 수 있습니다. 파라미터 바인딩 확인 : '?' 대신 실제 입력 값이 치환된 '실행 가능한 SQL'을 로그로 확인할 수 있습니다. 가독성 향상 (Multi-line) : 복잡한 쿼리를 여러 줄로 정렬하여 출력하므로 구조 파악이 용이합니다. Result Set 시각화 : SELECT 쿼리의 조회 결과를 콘솔에서 테이블 형태로 즉시 확인할 수 있습니다. 2. Maven 의존성 추가 (pom.xml) 가장 먼저 필요한 라이브러리를 프로젝트에 추가해야 합니다. 핵심 로깅을 담당하는 라이브러리와 커스텀 포...