복붙노트

[SPRING] 봄 최대 절전 모드 트랜잭션 로깅

SPRING

봄 최대 절전 모드 트랜잭션 로깅

우리는 스프링 트랜잭션 메커니즘을 어떻게 기록 할 수 있는가? 나는 아래 예제에서 Spring Doc sec 10.5.2.if를 보여주고있다. 나는이 레벨까지 로깅하는 방법을 원한다.

나는 봄, 최대 절전 모드 및 Log4j 사용하고 있습니다.

<!-- the Spring container is starting up... -->
[AspectJInvocationContextExposingAdvisorAutoProxyCreator] - Creating implicit proxy
for bean 'fooService' with 0 common interceptors and 1 specific interceptors
<!-- the DefaultFooService is actually proxied -->
[JdkDynamicAopProxy] - Creating JDK dynamic proxy for [x.y.service.DefaultFooService]
<!-- ... the insertFoo(..) method is now being invoked on the proxy -->
[TransactionInterceptor] - Getting transaction for x.y.service.FooService.insertFoo
<!-- the transactional advice kicks in here... -->
[DataSourceTransactionManager] - Creating new transaction with name    [x.y.service.FooService.insertFoo]
[DataSourceTransactionManager] - Acquired Connection
[org.apache.commons.dbcp.PoolableConnection@a53de4] for JDBC transaction
<!-- the insertFoo(..) method from DefaultFooService throws an exception... -->
[RuleBasedTransactionAttribute] - Applying rules to determine whether transaction should
rollback on java.lang.UnsupportedOperationException
[TransactionInterceptor] - Invoking rollback for transaction on x.y.service.FooService.insertFoo
due to throwable [java.lang.UnsupportedOperationException]

<!-- and the transaction is rolled back (by default, RuntimeException instances cause rollback) -->
[DataSourceTransactionManager] - Rolling back JDBC transaction on Connection
[org.apache.commons.dbcp.PoolableConnection@a53de4]
[DataSourceTransactionManager] - Releasing JDBC Connection after transaction
[DataSourceUtils] - Returning JDBC Connection to DataSource

Exception in thread "main" java.lang.UnsupportedOperationException
at x.y.service.DefaultFooService.insertFoo(DefaultFooService.java:14)
<!-- AOP infrastructure stack trace elements removed for clarity -->
at $Proxy0.insertFoo(Unknown Source)

로깅 파일 ..

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=info, stdout
log4j.category.org.springframework.transactions=DEBUG  

해결법

  1. ==============================

    1.Spring Reference에는 Logging에 대한 섹션이있다.

    Spring Reference에는 Logging에 대한 섹션이있다.

    log4j 중 여러 로깅 프레임 워크를 구성하는 방법을 보여줍니다.

    귀하의 경우 구성의 마지막 줄은 다음과 같습니다.

    log4j.logger.org.springframework.transaction=DEBUG
    
  2. ==============================

    2.스프링 트랜잭션 지원의 로그 수준을 설정하려는 경우 log4j.xml에 다음 로거를 추가하십시오.

    스프링 트랜잭션 지원의 로그 수준을 설정하려는 경우 log4j.xml에 다음 로거를 추가하십시오.

    <logger name="org.springframework.transaction">
            <level value="DEBUG" />
    </logger>
    
  3. from https://stackoverflow.com/questions/5898911/spring-hibernate-transaction-logging by cc-by-sa and MIT license