Отключение ведения журнала DEBUG net .sf.ehcache и org.hibernate - PullRequest
2 голосов
/ 30 апреля 2020

Я получаю множество сообщений DEBUG от net.sf.ehcache и org.hibernate в моем приложении Spring (версия 5.2.5.RELEASE). Я использую версию 5.2.10. Финал hibernate-ehcache. Сообщения выглядят так:

16:20:12.910 [RMI TCP Connection(3)-127.0.0.1] DEBUG net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl - Mocking Operation Statistic: XA_COMMIT
16:20:12.910 [RMI TCP Connection(3)-127.0.0.1] DEBUG net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl - Mocking Operation Statistic: XA_ROLLBACK
16:20:12.910 [RMI TCP Connection(3)-127.0.0.1] DEBUG net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl - Mocking Operation Statistic: XA_RECOVERY

, а также многие такие:

1:14:39.284 [http-nio-8080-exec-3] DEBUG org.hibernate.engine.internal.TwoPhaseLoad - Done materializing entity [com.acme.MyBean#145]

Я пытался отклонить их, используя это в log4j. xml

<logger name="net.sf.ehcache">
    <level value="WARN"/>
</logger>

Я также пробовал это в application.properties:

logging.level.org.springframework.web=WARNING
logging.level.org.hibernate=ERROR
logging.level.org.springframework.cache=WARNING

Но ни одно из этих изменений не отфильтровывает сообщения DEBUG.

Вот конфигурация ehcache, как определено в spring-config. xml:

<bean id="readOnlyDatabaseSessionFactory"
    class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">
                org.hibernate.dialect.SQLServerDialect
            </prop>
            <prop key="hibernate.show_sql">${hibernate.debug}</prop>
            <prop key="hibernate.format_sql">${hibernate.debug}</prop>
            <prop key="hibernate.use_sql_comments">${hibernate.debug}</prop>
            <prop key="hibernate.cache.region.factory_class">
                org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
            </prop>
            <prop key="net.sf.ehcache.configurationResourceName">
                ehcache.xml
            </prop>
            <prop key="hibernate.cache.use_query_cache">true</prop>
            <prop key="hibernate.cache.use_second_level_cache">true</prop>
            <prop key="hibernate.default_batch_fetch_size">100</prop>
        </props>
    </property>
    <property name="dataSource" ref="readOnlyDataSource"/>
</bean>

У меня есть следующие настройки в application.properties:

# logging for hibernate
logging.level.org.hibernate.SQL=warn
logging.level.org.hibernate.stat=warn
logging.level.org.hibernate.type=warn

logging.level.org.springframework.web=WARN
logging.level.org.hibernate=ERROR
logging.level.org.springframework.cache=WARN

logging.level.root=WARN
logging.level.net.sf.ehcache=WARN

spring.jpa.properties.hibernate.generate_statistics=false

Как отключить сообщения DEBUG для net.sf.ehcache и org.hibernate?

Ответы [ 2 ]

0 голосов
/ 11 мая 2020

Добро пожаловать в мир Open Source, где у вас есть много вариантов на выбор, но документации мало.

Я не знаю, используете ли вы только Spring или также Spring Boot, как вы запускаете свое приложение и без воспроизводимого сценария невозможно дать точный ответ, поэтому здесь дается более длинный и более сложный ответ:

  1. application.properties может работать, если вы используете правильные библиотеки журналов (например, в pom. xml) и правильный способ инициализации весенней загрузки (которую вы, вероятно, не используете)
  2. , если вы уверены, что используете весеннюю загрузку (зависимости + инициализация), но ваши файлы конфигурации игнорируются, хотя приложение читает их, возможно, вы переопределяете настройки, используя, например: переменные окружения, см. 17 различных способов настройки конфигурации для весенней загрузки 1.2
  3. , если вы используете maven, вы можете захотеть чтобы получить более четкое представление о том, какие каркасы ведения журналов вы используете, выполнив некоторые из Команды se: mvn dependency:tree или mvn help:effective-pom или в любом случае посмотрите на путь к классу Java, для которого могут быть загружены файлы и каталоги, из которых могут быть загружены библиотеки журналов и файлы конфигурации, и прочитайте соответствующую документацию о том, как их настроить (что очень отличается, например, для не обратно-совместимого log4j2, чем для log4j 1.x, logback и т. д. c.)
  4. , прежде чем вы начнете отчаянно дергать себя за волосы, потому что вы действительно не можете найти, где ваше приложение пытается загрузить логи настройте из, запустите инструмент трассировки для вашей операционной системы, чтобы увидеть, какие файлы он открывает и читает во время запуска, например: strace (Linux), монитор процессов sysinternals (Windows) дают представление о взаимодействии между вашим приложением (* 1045) *) и операционная система

Наконец, учтите, что некоторые каркасы ведения журналов (например, log4j2, slf4j) были разбиты на несколько частей, например:

  1. для программист для программирования / компиляции с
  2. для среды выполнения, чтобы записать протоколирование в файл, по сети или в другую среду ведения журнала
  3. интеграция, чтобы также получать запись из других framworks

Посмотрите на несколько замечательных примеров, как вы можете использовать это:

0 голосов
/ 10 мая 2020

Если вы хотите отключить ведение журнала для указанного пакета c, вам следует использовать значение off. Это будет работать как на уровне пакета, так и на уровне класса, например:

logging.level.org.hibernate.SQL=OFF

com.yourproject.util.SomeUtilsClass=OFF

Обычно logging.level.net.sf.ehcache=WARN должно работать, но вы можете попробовать:

logging.level.net.sf.ehcache.statistics.extended=WARN

Если вы запускаете тест Junit, вы следует обновить / создать другую конфигурацию для этого, потому что по умолчанию junit будет использовать DEBUG в качестве уровня журнала root, при котором при запуске приложения springboot оно будет по умолчанию использовать INFO и то, что вы настроили в своем application.properties.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...