최대 로깅 모드 로깅 콘솔 출력
최대 용량 모드 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 = 경고, stdout # log4j.logger.org.hibernate = 정보 log4j.logger.org.hibernate = 디버그 ### HQL 쿼리 파서 활동 기록 # log4j.logger.org.hibernate.hql.ast.AST = 디버그 ### SQL 만 기록 # log4j.logger.org.hibernate.SQL = 디버그 ### JDBC 바인드 매개 변수 기록 ### log4j.logger.org.hibernate.type = 정보 # log4j.logger.org.hibernate.type = 디버그 ### 로그 스키마 내보내기 / 업데이트 ### log4j.logger.org.hibernate.tool.hbm2ddl = 디버그 ### 로그 HQL 구문 분석 트리 # log4j.logger.org.hibernate.hql = 디버그 ### 로그 캐시 활동 ### # log4j.logger.org.hibernate.cache = 디버그 ### 트랜잭션 활동 기록 # log4j.logger.org.hibernate.transaction = 디버그 ### JDBC 자원 기록 # log4j.logger.org.hibernate.jdbc = 디버그 ### 연결을 추적하려는 다음 라인을 활성화하십시오. ### 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>
가장 먼저 할 일은 어떤 로깅 프레임 워크가 실제로 사용되는지 알아내는 것입니다.
위의 다른 작성자가 이미 많은 프레임 워크를 다루고 있습니다. Logback을 사용하는 경우이 logback.xml 을 클래스 경로 에 추가하여 문제를 해결할 수 있습니다 .
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<logger name="org.hibernate" level="WARN"/>
</configuration>
추가 정보 : Logback 수동 구성
우아한 솔루션을 원하지 않는 사람들을 위해, 그 메시지를 멈추는 빠르고 더러운 방법은 나를 위해 일한 솔루션입니다 (저는 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
...
}
이 사이트 에서 다운로드 한 튜토리얼 프로그램에서 사용했습니다.
"디버그"를 "정보"로 변경했는데 제대로 작동했습니다. 내가 한 일은 다음과 같습니다.
전에:
log4j.rootLogger=debug, stdout, R
후:
log4j.rootLogger=info, stdout, R
slf4j-jdk14-xxx.jar를 slf4j-log4j12-xxx.jar로 바꿉니다. 둘 다있는 경우 slf4j-jdk14-xxx.jar를 삭제하십시오. 이 솔루션은 https://forum.hibernate.org/viewtopic.php?f=1&t=999623 에서 찾았습니다.
콘솔에서 로거 출력을 제거하려면 이것을 시도하십시오.
ch.qos.logback.classic.LoggerContext.LoggerContext loggerContext = (LoggerContext) org.slf4j.LoggerFactory.LoggerFactory.getILoggerFactory();
loggerContext.stop();
이 명령문은 로거의 모든 콘솔 출력을 비활성화했습니다.
참고 URL : https://stackoverflow.com/questions/311408/turning-off-hibernate-logging-console-output
'ProgramingTip' 카테고리의 다른 글
C 소스 파일을 연결하지 않는 이유는 무엇입니까? (0) | 2020.10.20 |
---|---|
페이지를 새로 고침 할 때 선택이 선택 상태로 유지되는 이유는 무엇입니까? (0) | 2020.10.20 |
string.xml 파일에 "-"를 넣는 방법 (0) | 2020.10.20 |
디렉토리의 각 파일에 대한 Linux 쉘 펼쳐 파일 이름을 갖춘 프로그램 실행 (0) | 2020.10.20 |
UIAppearance 프록시를 통해 어떤 속성을 접근 할 수 있습니까? (0) | 2020.10.20 |