최대 절전 모드 3을 사용하고 있으며 모든 시작 메시지를 콘솔에 덤프하지 않도록하고 싶습니다. log4j.properties에서 stdout 줄을 주석 처리했지만 운이 없었습니다. 아래에 내 로그 파일을 붙여 넣었습니다. 또한 표준 프로젝트 구조로 이클립스를 사용하고 있으며 프로젝트 폴더의 루트와 bin 폴더 모두에 log4j.properties의 복사본이 있습니다.
### stdout에 대한 직접 로그 메시지 ### # 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 ### hibernate.log 파일로 메시지 보내기 ### log4j.appender.file = org.apache.log4j.FileAppender log4j.appender.file.File = hibernate.log log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern = % d {ABSOLUTE} % 5p % c {1} : % L-% m % n ### 로그 수준 설정-더 자세한 로깅을 위해 'info'를 'debug'로 변경합니다. ### log4j.rootLogger = warn, stdout # log4j.logger.org.hibernate = info log4j.logger.org.hibernate = debug ### HQL 쿼리 파서 활동 기록 # log4j.logger.org.hibernate.hql.ast.AST = debug ### SQL 만 기록 # log4j.logger.org.hibernate.SQL = debug ### JDBC 바인드 매개 변수 기록 ### log4j.logger.org.hibernate.type = info # log4j.logger.org.hibernate.type = debug ### 로그 스키마 내보내기 / 업데이트 ### log4j.logger.org.hibernate.tool.hbm2ddl = debug ### 로그 HQL 구문 분석 트리 # log4j.logger.org.hibernate.hql = debug ### 로그 캐시 활동 ### # log4j.logger.org.hibernate.cache = debug ### 트랜잭션 활동 기록 # log4j.logger.org.hibernate.transaction = debug ### JDBC 자원 획득 기록 # log4j.logger.org.hibernate.jdbc = debug ### 연결을 추적하려면 다음 라인을 활성화하십시오. ### DriverManagerConnectionProvider를 사용할 때 ### 누출 ### # log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider = trac5
답변
보다 합리적인 로깅 수준을 설정하십시오. 로깅 수준을로 설정하면 이상 수준 ( , 및 )의 info
로그 이벤트 만 기록되며, 즉 로깅 이벤트는 무시됩니다.info
warn
error
fatal
debug
log4j.logger.org.hibernate=info
또는 XML 버전 의 log4j 구성 파일 :
<logger name="org.hibernate">
<level value="info"/>
</logger>
log4j 매뉴얼 도 참조하십시오 .
답변
중요 공지 : 속성 (로깅 프레임 워크 구성의 일부가 아닌 최대 절전 구성의 일부입니다!)
hibernate.show_sql
로깅 프레임 워크를 우회하여 STDOUT에 대한 로깅을 직접 제어합니다 (메시지의 출력 형식이 누락되어 인식 할 수 있음). log4j와 같은 로깅 프레임 워크를 사용하는 경우 에는 아무런 이점이 없으므로 항상 해당 속성을 false로 설정 해야 합니다.
그 상황은 내가 Hibernate에 관한 벤치 마크를 작성하기 전까지는 전혀 신경 쓰지 않았기 때문에 꽤 오랫동안 나를 짜증나게했다.
답변
실행 중 :
java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.OFF);
최대 절전 모드의 초기화가 작동하기 전에.
참고 : 위의 줄은 모든 로깅을 해제합니다 ( Level.OFF
). 덜 엄격하게하려면 다음을 사용할 수 있습니다.
java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.SEVERE);
충분히 조용합니다. (또는 java.util.logging.Level
더 많은 레벨을 위해 수업을 확인하십시오 ).
답변
이 최대 절전 (hb 구성) 소품을 false로 설정하여 최대 절전 모드의 많은 출력을 비활성화 할 수 있습니다.
hibernate.show_sql
hibernate.generate_statistics
hibernate.use_sql_comments
그러나 모든 콘솔 정보를 비활성화하려면 org.hibernate
Juha와 같은 클래스의 NONE of FATAL 로거 수준을 설정해야합니다 .
답변
나는 마침내 Hibernate가 지금 slf4j 로그 파사드를 사용하고 있기 때문에 log4j에 연결하기 때문에 log4j 및 slf4j-log4j12 jar를 lib에 넣어야하며 log4j 속성이 Hibernate 로그를 제어하게됩니다.
내 pom.xml 설정은 다음과 같습니다.
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
답변
Hibernate:select
로그에서 메시지 를 비활성화 하려면 속성을 HibernateJpaVendorAdapter
다음과 같이 설정할 수 있습니다 .
<bean id="jpaVendorAdapter"
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false"/>
</bean>
답변
우아한 솔루션을 원하지 않는 사람들을 위해, 그 메시지를 멈추는 빠르고 더러운 방법은 나를 위해 일한 솔루션입니다 (저는 Hibernate 4.3.6 및 Eclipse를 사용하고 위에 제공된 답변이 없거나 인터넷에서 찾을 수 없습니다) 작동했습니다. log4j 구성 파일도 프로그래밍 방식으로 로깅 수준을 설정하지도 않았습니다.)
public static void main(String[] args) {
//magical - do not touch
@SuppressWarnings("unused")
org.jboss.logging.Logger logger = org.jboss.logging.Logger.getLogger("org.hibernate");
java.util.logging.Logger.getLogger("org.hibernate").setLevel(java.util.logging.Level.WARNING); //or whatever level you need
...
}
이 사이트 에서 다운로드 한 튜토리얼 프로그램에서 사용했습니다.