[SPRING] 스프링 설정 디버깅
SPRING스프링 설정 디버깅
Spring과 Hibernate를 사용하고 Websphere에서 실행되는 Java 응용 프로그램에서 작업하고 있습니다. 나는 Spring이 내 객체에 Dao를로드 할 것을 기대하지만 문제가 발생했다.하지만 어떤 이유로 그것이 발생하지 않는다. (같은 방식으로 지정된 다른 DAO는 잘로드됩니다.)
질문은 - Spring이 어떻게로드 할 것인지를 어떻게 디버깅 할 수 있습니까? Spring 용 로깅을 켤 수 있습니까?
해결법
-
==============================
1.예, Spring 프레임 워크 로깅은 매우 자세합니다. 이미 로깅 프레임 워크를 사용하고 있는지 여부는 귀하의 게시물에서 언급하지 않았습니다. log4j를 사용하는 경우 log4j 구성에 spring appender를 추가하십시오 (예 : log4j.xml 또는 log4j.properties). log4j xml 구성을 사용하는 경우 다음과 같이 할 수 있습니다
예, Spring 프레임 워크 로깅은 매우 자세합니다. 이미 로깅 프레임 워크를 사용하고 있는지 여부는 귀하의 게시물에서 언급하지 않았습니다. log4j를 사용하는 경우 log4j 구성에 spring appender를 추가하십시오 (예 : log4j.xml 또는 log4j.properties). log4j xml 구성을 사용하는 경우 다음과 같이 할 수 있습니다
<category name="org.springframework.beans"> <priority value="debug" /> </category>
또는
<category name="org.springframework"> <priority value="debug" /> </category>
JUnit 테스트를 사용하여이 문제를 단독으로 테스트 해 보길 권합니다. Junit과 함께 스프링 테스트 모듈을 사용하면이 문제를 해결할 수 있습니다. 스프링 테스트 모듈을 사용하면 컨텍스트 구성을 기반으로 컨텍스트 파일을로드하고 컨테이너를 시작하여 비즈니스 논리 테스트에만 집중할 수 있도록 대량의 작업을 수행합니다. 여기에 작은 예제가 있습니다.
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:springContext.xml"}) @Transactional public class SpringDAOTest { @Autowired private SpringDAO dao; @Autowired private ApplicationContext appContext; @Test public void checkConfig() { AnySpringBean bean = appContext.getBean(AnySpringBean.class); Assert.assertNotNull(bean); } }
로깅을로드하는 방법을 변경하도록 권장하지는 않지만 dev 환경에서이 방법을 사용해보십시오.이 스 니펫을 web.xml 파일에 추가하십시오.
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
업데이트 log4j 설정 파일
내 로컬 바람둥이에 이것을 테스트하고 그것은 응용 프로그램 시작에 많은 로깅을 생성. @Rayan Stewart가 언급 한 바와 같이 정보를 디버그하지 말고 정정하고 싶다.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <param name="Threshold" value="debug" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{HH:mm:ss} %p [%t]:%c{3}.%M()%L - %m%n" /> </layout> </appender> <appender name="springAppender" class="org.apache.log4j.RollingFileAppender"> <param name="file" value="C:/tomcatLogs/webApp/spring-details.log" /> <param name="append" value="true" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM/dd/yyyy HH:mm:ss} [%t]:%c{5}.%M()%L %m%n" /> </layout> </appender> <category name="org.springframework"> <priority value="debug" /> </category> <category name="org.springframework.beans"> <priority value="debug" /> </category> <category name="org.springframework.security"> <priority value="debug" /> </category> <category name="org.springframework.beans.CachedIntrospectionResults"> <priority value="debug" /> </category> <category name="org.springframework.jdbc.core"> <priority value="debug" /> </category> <category name="org.springframework.transaction.support.TransactionSynchronizationManager"> <priority value="debug" /> </category> <root> <priority value="debug" /> <appender-ref ref="springAppender" /> <!-- <appender-ref ref="STDOUT"/> --> </root> </log4j:configuration>
-
==============================
2.Spring Boot를 사용하는 경우 --debug 플래그로 응용 프로그램을 시작하여 "디버그"모드를 활성화 할 수도 있습니다.
Spring Boot를 사용하는 경우 --debug 플래그로 응용 프로그램을 시작하여 "디버그"모드를 활성화 할 수도 있습니다.
java -jar myapp.jar --debug
application.properties에서 debug = true를 지정할 수도 있습니다.
디버그 모드가 활성화되면 코어 로거 (임베디드 컨테이너, Hibernate 및 Spring Boot) 중 일부가 자세한 정보를 출력하도록 구성됩니다. 디버그 모드를 활성화해도 DEBUG 수준의 모든 메시지를 기록하도록 응용 프로그램이 구성되지 않습니다.
또는 응용 프로그램을 --trace 플래그 (또는 application.properties에서 trace = true)로 시작하여 "추적"모드를 활성화 할 수 있습니다. 이렇게하면 코어 로거 (임베디드 컨테이너, Hibernate 스키마 생성 및 전체 Spring 포트폴리오) 중 일부에 대한 추적 로깅을 사용할 수 있습니다.
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
from https://stackoverflow.com/questions/7840088/debugging-spring-configuration by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 3.0 대 Java EE 6.0 [닫기] (0) | 2018.12.29 |
---|---|
[SPRING] Spring MVC 컨트롤러 메서드에서 GET HTTP 요청의 매개 변수 값을 얻는 방법은 무엇입니까? (0) | 2018.12.29 |
[SPRING] Spring RestTemplate으로 폼 데이터를 POST하는 방법? (0) | 2018.12.29 |
[SPRING] 최대 절전 모드 : 일반 DAO (0) | 2018.12.29 |
[SPRING] 의존성 주사 란 무엇입니까? [복제] (0) | 2018.12.28 |