Отключение регистрации для Hibernate c3p0 - PullRequest
9 голосов
/ 16 апреля 2011

Я использую пул соединений c3p0 Hibernate и стандартную версию Java 1.4 java.util.logging.После запуска мое приложение устанавливает свои свойства ведения журнала (включая уровни форматирования и ведения журнала) в блоке static.Каждый раз, когда я запускаю свое приложение, я вижу следующее:

2011-04-16 17-43-51 [com.mchange.v2.log.MLog] INFO: {MLog.<clinit>) MLog clients using java 1.4+ standard logging.
2011-04-16 17-43-51 [com.mchange.v2.c3p0.C3P0Registry] INFO: {C3P0Registry.banner) Initializing c3p0-0.9.1 [built 16-January-2007 14:46:42; debug? true; trace: 10]
2011-04-16 17-43-51 [com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource] INFO: {AbstractPoolBackedDataSource.getPoolManager)
...

Я пробовал

Logger.getLogger("com.mchange").setLevel(Level.WARNING);
com.mchange.v2.log.MLog.getLogger().setLevel(MLevel.WARNING);
System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL", "WARNING");

, но единственный способ предотвратить это, который я нашел сейчас, это

Logger.getLogger("").setLevel(Level.WARNING);

, который влияет на все - не хороший побочный эффект.Google не помог.Может ли кто-нибудь помочь, пожалуйста?

Ответы [ 6 ]

19 голосов
/ 18 апреля 2011

Я нашел способ установить системное свойство

System.setProperty("com.mchange.v2.log.MLog", "com.mchange.v2.log.FallbackMLog");

в дополнение к

System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL", "WARNING");

Я думал, что отсутствие какой-либо другой системы ведения журнала сделает это необязательным, нокажется, что я был не прав.

PS

Черт возьми, эти заново созданные колеса реализации пользовательских логов, как та, которую использует c3p0 ...

11 голосов
/ 25 октября 2014

Способ, которым я нашел для достижения этого

Создайте в вашем classpath файл с именем mchange-log.properties и вставьте в него свойства, предложенные Frozen Spider.

com.mchange.v2.log.MLog=com.mchange.v2.log.FallbackMLog
com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=WARNING

Это прекрасно работает, даже если вы не можете установить системные свойства напрямую.

3 голосов
/ 03 февраля 2013

Похоже, что в журнале c3p0 по умолчанию используется DEBUG. Это может привести к большому шуму.

Добавляя такую ​​строку в log4j.properties, вы говорите регистратору не беспокоить вас сообщениями c3p0 - если это не что-то важное:

log4j.logger.com.mchange.v2=WARN
3 голосов
/ 16 апреля 2011

Вы не хотите видеть какие-либо записи в c3p0?

Если это так, попробуйте:

Logger.getLogger("com.mchange.v2.c3p0").setLevel(Level.WARNING);

ИЛИ, если вы даже не хотите видеть первую строку журнала:

Logger.getLogger("com.mchange.v2").setLevel(Level.WARNING);
1 голос
/ 19 декабря 2017

Возможно, это действительно поздно, но, согласно веб-сайту проекта c3p0, можно настроить ведение журнала внутри mchange-log.properties, чтобы вы могли захватывать информацию с помощью slf4j или log4j (и, следовательно, также с помощью Logback).

Ссылка http://www.mchange.com/projects/c3p0/#configuring_logging предоставляет эту информацию о том, что в вашем файле mchange-log.properties установите для свойства com.mchange.v2.log.MLog значение com.mchange.v2.log.slf4j.Slf4jMLog, тогда в вашем logback.xml вы можете указать регистратор, подобный этому:

<logger name="com.mchange" level="warn" additivity="false">
    <appender-ref ref="c3p0-log" />
</logger>

Примечание. Прежде чем использовать этот точный фрагмент кода, вам потребуется создать приложение для входа в систему с именем c3p0-log.

0 голосов
/ 17 апреля 2011

создайте файл с именем log4j.properties в корневом пути к классам и установите следующее:

# Configure the name of the file for the LOGGER appender
log4j.appender.LOGGER=org.apache.log4j.ConsoleAppender
log4j.appender.LOGGER.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGGER.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
log4j.appender.LOGGER.append=false

# this line logs everything from hibernate package at info level, you can refine this to include only some pachages like log4j.logger.org.hibernate.hql etc.,
log4j.logger.org.hibernate=INFO, LOGGER

log4j.logger.org.jboss.cache=INFO, LOGGER

это гораздо лучший способ реализации ведения журнала, потому что если вы зададите стратегию ведения журнала программно, токонфигурация иногда может вообще не действовать (как в вашем случае) .. если вы используете файл log4j.properties, конфигурация применяется при запуске приложения, и все работает гладко.

...