[java] 최대 절전 모드 로깅 콘솔 출력 끄기

최대 절전 모드 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로그 이벤트 만 기록되며, 즉 로깅 이벤트는 무시됩니다.infowarnerrorfataldebug

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.hibernateJuha와 같은 클래스의 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

    ...
}

이 사이트 에서 다운로드 한 튜토리얼 프로그램에서 사용했습니다.