Как отключить саморекламу 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 или любой 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);
    });
}

к сожалению, это не работает, сообщение все еще появляется.

Как сделать так, чтобы это сообщение исчезло без изменения кода, которого я хочу избежать здесь?

4 ответов


Это, кажется, работает для меня:

static {
    LogManager.getLogManager().reset();
}

Это также указано как решение пару раз в этом вопросе переполнения стека.

обратите внимание, что версия 3.6+ также будет поставляться с системное свойство, которое можно использовать для деактивации отображения этого логотипа:

-Dorg.jooq.no-logo=true

это сообщение находится в org.jooq.impl.DefaultRenderContext исходный файл и с помощью org.jooq.Константы!--6--> регистратор. Вот соответствующий исходный код:

    /* [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 отключит сообщение. Что еще может быть лучше, чтобы показать, что вы большой поклонник проекта?

в противном случае, если вы можете жить с вины и стыда, вы можете отключить информационные сообщения из организации.jooq.Константы logger, установив уровень предупреждения.

Это можно сделать, добавив следующее к вашему журналу.свойства:

#ThanksNoThanks
org.jooq.Constants.level=WARNING

или в коде Java, вызывая следующие методы:

//SorryNotSorry Logger.getLogger("org.jooq.Constants").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 
*/ 

на v3.6 и выше вы можете сделать:

System.getProperties().setProperty("org.jooq.no-logo", "true");

В случае, если вы используете org.slf4j.Logger для входа в ваш resources/logback.xml можно добавить что-то вроде этого

<logger name="org.jooq" level="warn" additivity="false"> <appender-ref ref="STDOUT" /> </logger>