programing

@Cacheable 히트 시 스프링 캐시 로깅

codeshow 2023. 9. 4. 20:50
반응형

@Cacheable 히트 시 스프링 캐시 로깅

현재 Spring Cache와 함께 작업하고 있습니다.@Cacheable/@CacheEvict주석

다음과 같은 콘솔 로그 명세서를 받고 싶습니다."INFO: i got those values from the cache, NOT from the host. awesome"

이것을 하는 깨끗하고 쉬운 방법이 있습니까?사용 중입니다.slf4j명백하게도, 만약 그것이 관심이 있다면요.

또한 Spring Boot 2의 경우 application.properties에 다음을 추가할 수 있습니다.

logging.level.org.springframework.cache=TRACE

Spring 자체는 캐시 추상화 동작의 일부를 다음과 같이 기록합니다.org.springframework.cache로거인.trace레벨입니다. 그래서, 만약 당신이 아래에 로그를 추가한다면.org.springframework.cache적절한 어펜더에 대한 로거를 사용하면 콘솔과 같은 유용한 정보를 얻을 수 있습니다.로그백을 사용하는 경우 다음과 같은 방법을 사용할 수 있습니다.logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <logger name="org.springframework.cache" level="trace">
        <appender-ref ref="STDOUT" />
    </logger>
</configuration>

이 구성을 사용하면 콘솔에 다음과 같은 내용이 표시됩니다.

'persons' 캐시에 'Page request [숫자: 0, 크기: 20, 정렬: null]' 키에 대한 캐시 항목이 있습니다.

추적 수준 로깅을 활성화할 수 있습니다.

예를 들어, application.properties에서는 'sys=true'를 입력합니다.

스프링 로깅 문서

추적 로그를 항상 여는 것은 캐시 로그를 위한 것이기는 하지만 좋은 생각은 아닌 것 같습니다.
더 나은 방법은 EHcache에 이미 이러한 히트/미스 메트릭이 있으므로 다음을 통해 얻을 수 있습니다.JMX또는spring boot actuator.

JMX에서 사용하려면 다음을 참조하십시오.

사용하기Spring Boot Actuator당신은 이것을 참조할 수 있습니다.

application.yml 및 spring-boot 2를 사용하는 경우

logging:
  level:
    org.springframework.cache: TRACE

DEBUG 레벨을 설정하지 마십시오. TRACE에만 작동합니다.

application.properties용

logging.level.org.springframework.cache=TRACE

언급URL : https://stackoverflow.com/questions/37281139/spring-cache-logging-on-cacheable-hit

반응형