문제

Log4J의 XML 스타일 구성 파일을 사용하여 Hibernate의 로깅을 구성하는 방법에 대한 문서를 찾을 수 없었습니다.

이것이 가능합니까 아니면 Hibernate의 로깅을 제어하기 위해 Properties Style 구성 파일을 사용합니까?

누군가가 문서에 대한 정보 나 링크가 있으면 감사하겠습니다.

편집하다:
명확히하기 위해, 나는 최대 절전 모드를 제어하기위한 실제 XML 구문의 예를 찾고 있습니다.

edit2 :
다음은 XML 구성 파일에있는 것입니다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="info"/>
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/>
        </layout>
    </appender>
    <appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="Program-Name.log"/>
        <param name="MaxFileSize" value="1000KB"/>
    <!-- Keep one backup file -->
        <param name="MaxBackupIndex" value="4"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
        </layout>
    </appender>

    <root>
        <priority value ="debug" />
        <appender-ref ref="console" />
        <appender-ref ref="rolling-file" />
    </root>
</log4j:configuration>

로깅은 잘 작동하지만 현재 로그를 범람하고 있기 때문에 내 응용 프로그램 수준 로깅과 분리 된 방식으로 최대 절전 모드 로깅을 내려 놓고 제어 할 수있는 방법을 찾고 있습니다. 선호도 파일을 사용하여이를 수행하는 예제를 찾았습니다. XML 파일 에서이 작업을 수행 할 수있는 방법이 궁금했습니다.

도움이 되었습니까?

해결책

에서 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-logging

로거 카테고리 목록은 다음과 같습니다.

Category                    Function

org.hibernate.SQL           Log all SQL DML statements as they are executed
org.hibernate.type          Log all JDBC parameters
org.hibernate.tool.hbm2ddl  Log all SQL DDL statements as they are executed
org.hibernate.pretty        Log the state of all entities (max 20 entities) associated with the session at flush time
org.hibernate.cache         Log all second-level cache activity
org.hibernate.transaction   Log transaction related activity
org.hibernate.jdbc          Log all JDBC resource acquisition
org.hibernate.hql.ast.AST   Log HQL and SQL ASTs during query parsing
org.hibernate.secure        Log all JAAS authorization requests
org.hibernate               Log everything (a lot of information, but very useful for troubleshooting) 

log4J XML 구성 파일에 붙여 넣기 위해 형식화 :

<!-- Log all SQL DML statements as they are executed -->
<Logger name="org.hibernate.SQL" level="debug" />
<!-- Log all JDBC parameters -->
<Logger name="org.hibernate.type" level="debug" />
<!-- Log all SQL DDL statements as they are executed -->
<Logger name="org.hibernate.tool.hbm2ddl" level="debug" />
<!-- Log the state of all entities (max 20 entities) associated with the session at flush time -->
<Logger name="org.hibernate.pretty" level="debug" />
<!-- Log all second-level cache activity -->
<Logger name="org.hibernate.cache" level="debug" />
<!-- Log transaction related activity -->
<Logger name="org.hibernate.transaction" level="debug" />
<!-- Log all JDBC resource acquisition -->
<Logger name="org.hibernate.jdbc" level="debug" />
<!-- Log HQL and SQL ASTs during query parsing -->
<Logger name="org.hibernate.hql.ast.AST" level="debug" />
<!-- Log all JAAS authorization requests -->
<Logger name="org.hibernate.secure" level="debug" />
<!-- Log everything (a lot of information, but very useful for troubleshooting) -->
<Logger name="org.hibernate" level="debug" />

NB : 대부분의 로거는 디버그 레벨을 사용하지만 org.hibernate.type는 추적을 사용합니다. 이전 버전의 Hibernate org.hibernate.type에서도 디버그를 사용했지만 Hibernate 3의 경우 JDBC 매개 변수 바인딩 로깅을보기 위해 레벨을 추적 (또는 모두)로 설정해야합니다.

카테고리는 다음과 같이 지정됩니다.

<logger name="org.hibernate">
    <level value="ALL" />
    <appender-ref ref="FILE"/>
</logger>

루트 요소 앞에 배치해야합니다.

다른 팁

로키'에스 대답 최대 절전 모드 3 문서를 가리키고 좋은 정보를 제공하지만 여전히 기대 한 결과를 얻지 못했습니다.

많은 스 래싱, 팔을 흔들고 일반적인 죽은 마우스 달리기가 마침내 내 치즈를 착륙시켰다.

최대 절전 모드 3이 사용하고 있기 때문입니다 Java를위한 간단한 벌목 정면 (SLF4J) (문서에 따라), 만약에 당신은 log4J 1.2에 의존하고 있습니다 또한 필요합니다 SLF4J-LOG4J12-1.5.10.jar 당신이 원한다면 충분히 Log4J 구성 파일로 최대 절전 모드 로깅을 구성하십시오. 이것이 다음 사람에게 도움이되기를 바랍니다.

Homaxto의 의견에 응답하여 이것이 제가 지금 가지고있는 것입니다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="debug"/>
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/>
        </layout>
    </appender>
    <appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="Program-Name.log"/>
        <param name="MaxFileSize" value="500KB"/>
        <param name="MaxBackupIndex" value="4"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
        </layout>
    </appender>

    <logger name="org.hibernate">
        <level value="info" />
    </logger>

    <root>
        <priority value ="debug" />
        <appender-ref ref="console" />
        <appender-ref ref="rolling-file" />
    </root>
</log4j:configuration>

핵심 부분은

<logger name="org.hibernate">
    <level value="info" />
</logger>

도움이 되었기를 바랍니다.

내가 사용하는 것은 다음과 같습니다.

<logger name="org.hibernate">
    <level value="warn"/>
</logger>

<logger name="org.hibernate.SQL">
    <level value="warn"/>
</logger>

<logger name="org.hibernate.type">
    <level value="warn"/>
</logger>

<root>
    <priority value="info"/>
    <appender-ref ref="C1"/>
</root> 

분명히, 나는 최대 절전 모드 메시지를보고 싶지 않습니다.) - 레벨을 "디버그"로 설정하여 출력을 얻습니다.

답이 유용했습니다. 변경 후 SQL 문의 중복 로깅, 하나는 Log4J 로그 파일과 하나는 표준 콘솔에 있습니다. Persistence.xml 파일을 표준 콘솔에서 로깅을 제거하기 위해 show_sql이라고 Show_SQL이라고 말한 것으로 변경했습니다. Format_SQL을 유지하는 것은 Log4J 로그 파일에도 영향을 미치므로 그 사실을 유지합니다.

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
        version="2.0">
    <persistence-unit name="myUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:file:d:\temp\database\cap1000;shutdown=true"></property>
            <property name="dialect" value="org.hibernate.dialect.HSQLDialect"/>
            <property name="hibernate.show_sql" value="false"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.connection.username" value="sa"/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        </properties>
    </persistence-unit>
</persistence>

당신은 당신의 구성을 구성 할 수 있습니다 log4j 이와 같은 카테고리 태그가있는 파일 (예제의 콘솔 appender 포함) :

<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yy-MM-dd HH:mm:ss} %p %c - %m%n" />
    </layout>
</appender>
<category name="org.hibernate">
    <priority value="WARN" />
</category>
<root>
    <priority value="INFO" />
    <appender-ref ref="console" />
</root>

따라서 최대 절전 모드의 모든 경고, 오류 또는 치명적인 메시지가 표시되지 않습니다. 또한 코드 및 라이브러리 코드는 정보 수준에 있습니다 (따라서 정보, 경고, 오류 및 치명적).

라이브러리의 로그 레벨을 변경하려면 Desactive Spring Info Log에 카테고리를 추가하십시오.

<category name="org.springframework">
    <priority value="WARN" />
</category>

또는 다른 애플 렌더와 함께, 추가 기능을 중단합니다 (추가 기능 기본값 값은 사실입니다)

<category name="org.springframework" additivity="false">
    <priority value="WARN" />
    <appender-ref ref="anotherAppender" />
</category>

그리고 모든 쿼리의 최대 절전 모드 로그를 원하지 않으면 최대 절전 모드 속성을 설정하십시오. show_sql 에게 false.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top