Как отключить самообъявление JooQ в версии 3.4+?
Я большой поклонник JooQ, но, к сожалению, с момента обновления с 3.3 он выводит очень раздражающее сообщение на консоль каждый раз перед выходом моего кода:
Feb 02, 2015 7:28:06 AM org.jooq.tools.JooqLogger info
INFO:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<snip>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Thank you for using jOOQ 3.5.1
К сожалению, я вообще не могу удалить этот журнал.
Обратите внимание, что я не использую slf4j, ни log4j, ни какой-либо log API; поэтому единственный доступный мне механизм - j.u.l.
Я попытался полностью отключить его, используя это:
static {
Stream.of(Logger.getAnonymousLogger(), Logger.getGlobal(),
Logger.getLogger("org.jooq.tools.JooqLogger")
).forEach(l -> {
l.setLevel(Level.OFF);
final Handler[] handlers = l.getHandlers();
Arrays.stream(handlers).forEach(l::removeHandler);
});
}
Unfortunatley, это не работает, сообщение все еще появляется.
Как мне удалить это сообщение, чтобы изменить код, который я хочу избежать здесь?
Ответы
Ответ 1
Кажется, это работает для меня:
static {
LogManager.getLogManager().reset();
}
Это также указано как решение пару раз в этом вопросе.
Обратите внимание, что версия 3. 6+ также поставляется с системным свойством, которое можно использовать для отключения отображения этого логотипа:
-Dorg.jooq.no-logo=true
Ответ 2
Это сообщение находится в исходном файле org.jooq.impl.DefaultRenderContext и использует регистратор org.jooq.Constants. Вот соответствующий исходный код:
/* [trial] */
JooqLogger l = JooqLogger.getLogger(Constants.class);
String message;
message = "Thank you for using jOOQ " + Constants.FULL_VERSION;
/* [pro] xx
xxxxxxx x xxxxxx xxx xxx xxxxx xxx xx xxx xxxx xxxx x x xxxxxxxxxxxxxxxxxxxxxx x x xxxxx xxxxxxxxx
xx [/pro] */
Похоже, сообщение сгенерировано, потому что вы используете пробную версию. Я бы предположил, что обновление до версии Pro отключит сообщение. Что еще может быть лучшим способом показать, что вы большой поклонник проекта?
В противном случае, если вы можете жить с чувством вины и стыда, вы можете отключить информационные сообщения из регистратора org.jooq.Constants, установив уровень WARNING.
Это можно сделать, добавив в свои logging.properties следующее:
#ThanksNoThanks
org.jooq.Constants.level=WARNING
Или в коде Java, вызвав следующие методы:
//SorryNotSorry
private static final JOOQ_AD_LOGGER = Logger.getLogger("org.jooq.Constants");
static {
JOOQ_AD_LOGGER.setLevel(Level.WARNING);
}
Обязательно соблюдайте условия лицензионного соглашения и соглашения о техническом обслуживании jOOQ:
jOOQ License and Maintenance Agreement:
* -----------------------------------------------------------------------------
* Data Geekery grants the Customer the non-exclusive, timely limited and
* non-transferable license to install and use the Software under the terms of
* the jOOQ License and Maintenance Agreement.
*
* This library is distributed with a LIMITED WARRANTY. See the jOOQ License
* and Maintenance Agreement for more details: http://www.jooq.org/licensing
*/
Ответ 3
На v3.6 и выше вы можете сделать:
System.getProperties().setProperty("org.jooq.no-logo", "true");
Ответ 4
Если вы используете org.slf4j.Logger
для ведения журнала, в resources/logback.xml
вы можете добавить что-то вроде этого
<logger name="org.jooq" level="warn" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
Ответ 5
Эта работа для меня на JavaFx 8 в основном классе на Jooq 3. 11+
@Override
public void start(Stage primaryStage) throws Exception{
System.getProperties().setProperty("org.jooq.no-logo", "true");
///Extra code......
}
Ответ 6
Я использую slf4j
, в моем logback-spring.xml я добавил:
<logger name="org.jooq.Constants" level="warn">
<appender-ref ref="STDOUT" />
</logger>
Это сработало.