Spring Boot 및 Logback을 사용하여 콘솔에 대한 휴지 상태 로깅을 피할 수 없음
Spring Boot 어플리케이션에서는 다음과 같이 로그백을 사용하여 휴지 상태의 특정 로깅을 설정했는데도 콘솔에 휴지 상태의 쿼리를 계속 표시합니다.
<appender name="HIBERNATE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGDIR}/hibernate.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOGDIR}/hibernate.log.%d</fileNamePattern>
</rollingPolicy>
</appender>
<logger name="org.hibernate" additivity="false">
<appender-ref ref="HIBERNATE"/>
</logger>
<logger name="org.hibernate.SQL" additivity="false">
<appender-ref ref="HIBERNATE"/>
</logger>
<logger name="org.hibernate.type.descriptor.sql" additivity="false">
<appender-ref ref="HIBERNATE"/>
</logger>
쿼리를 포함한 휴지 상태의 로그를 파일로 보냅니다.hibernate.log
다만, 콘솔에서의 쿼리는 피하고 싶습니다.이 설정에서는 이 쿼리를 실행할 필요가 있다고 생각합니다.
제가 무엇을 빠뜨리고 있나요?
를 설정하면,hibernate.show_sql
로.true
hibernate는 SQL 스테이트먼트를 콘솔에 출력하기만 하면 됩니다(로그하는 것과 혼동하지 않습니다).org.hibernate.SQL
).SqlStatementLogger
SQL 문과 SQL 문의 로그를 기록합니다.logStatement
외관:
public void logStatement(String statement, Formatter formatter) {
if ( format ) {
if ( logToStdout || LOG.isDebugEnabled() ) {
statement = formatter.format( statement );
}
}
LOG.debug( statement );
if ( logToStdout ) {
System.out.println( "Hibernate: " + statement );
}
}
따라서 콘솔에서 쿼리를 표시하지 않으려면hibernate.show_sql
로 설정함으로써false
아니면 아예 없앤다든지.Spring Boot에서 이 기능을 추가해 주세요.application.properties
:
spring.jpa.show-sql=false
org.hibernate의 원인이 될 수 있는 다른 설정이 있다는 것을 방금 깨달았습니다.Spring Boot JUnit 테스트에서 디버깅하는 SQL, 단,
spring.jpa.show-sql=false
그리고.
spring.jpa.properties.hibernate.show_sql=false
...
설정했을 경우
debug=true
Spring 어플리케이션*.프로퍼티 파일!
true로 설정하면 show-sql 설정이 덮어쓰고 true로 설정됩니다.
브릿지
기본적으로 2개의 속성을 false로 설정해야 합니다.
스프링 부트를 사용하는 경우 Application.properties에서 다음과 같이 설정합니다.
spring.jpa.properties.hibernate.generate_statistics=false
spring.jpa.properties.hibernate.show_sql=false
hibernate.cfg.xml 을 사용하고 있는 경우는, 다음과 같이 설정합니다.
<property name="hibernate.generate_statistics">false</property>
<property name="show_sql">false</property>
위의 모든 것을 시도했는데도 문제가 해결되지 않는 경우 속성을 설정해 보십시오.
logging.level.org.hibernate.SQL=OFF
내 어플리케이션은 스프링 부트 어플리케이션이야
제 경우 어떤 이유에서인지 'spring.jpa'라는 부동산이 있습니다.show-sql=false'는 동작하지 않았습니다.바인딩 값을 가진 SQL이 콘솔/로그에서 쿼리를 계속 인쇄하는 것을 볼 수 있었습니다.
다음과 같이 루트 레벨을 오류로 변경하여 해결합니다.
<root level="ERROR"> <appender-ref ref="STDOUT"/> </root>
루트에서는 로그 레벨을 에러로 변경하지만, 아래와 같이 별도의 로거를 사용하여 패키지/어플리케이션 로그를 info 모드로 인쇄할 수 있습니다.
<logger name="com.application.code" level="INFO"> <appender-ref ref="FILE"/> <appender-ref ref="ERR_FILE"/> </logger>
누군가에게 도움이 될 수 있도록 여기에 놓아두죠.
감사해요.
언급URL : https://stackoverflow.com/questions/36496178/cant-avoid-hibernate-logging-sql-to-console-with-spring-boot-and-logback
'it-source' 카테고리의 다른 글
컨트롤러 함수에 대한 호출이 기능하지 않는 각도 ng클릭 (0) | 2023.03.17 |
---|---|
config() 모듈에서의 의존관계 주입: 각도JS (0) | 2023.03.17 |
React-Router와의 액티브링크 (0) | 2023.03.17 |
유형 설명: 모듈 외부에서 가져오기 문을 사용할 수 없습니다. (0) | 2023.03.17 |
AngularJS에서 속성을 조건부로 적용하는 가장 좋은 방법은 무엇입니까? (0) | 2023.03.12 |