web-dev-qa-db-ja.com

3.4以降でJooQの自己広告メッセージを無効にする方法は?

私は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、logAPIを使用していないことに注意してください。したがって、私が利用できる唯一のメカニズムは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);
    });
}

残念ながら、それは機能しません、メッセージはまだ表示されます。

ここで避けたいコードを変更する前に、このメッセージを非表示にするにはどうすればよいですか?

29
fge

これは私にとってはうまくいくようです:

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

これは解決策としても示されています このStack Overflowの質問で数回

バージョン3.6以降には このロゴの表示を非アクティブ化するために使用できるシステムプロパティ :も付属していることに注意してください。

-Dorg.jooq.no-logo=true
18
Lukas Eder

V3.6以降では、次のことができます。

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

そのメッセージは 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] */ 

試用版を使用しているため、メッセージが生成されたようです。プロバージョンにアップグレードするとメッセージが無効になると思います。あなたがプロジェクトの大ファンであることを示すためのより良い方法は他にありますか?

それ以外の場合、 罪悪感と恥 と共存できる場合は、レベルをWARNINGに設定することで、org.jooq.Constantsロガーからの情報メッセージを無効にすることができます。

これは、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 
*/ 
5
jmehrens

ロギングにorg.slf4j.Loggerを使用している場合は、resources/logback.xmlにそのようなものを追加できます

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

2
mcfan

これは、Jooq3.11 +のメインクラスのJavaFx8で動作します。

@Override
    public void start(Stage primaryStage) throws Exception{
     System.getProperties().setProperty("org.jooq.no-logo", "true");
     ///Extra code......

}

私が使う slf4j、logback-spring.xmlに、次を追加しました。

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

これはうまくいきました。

0
flamezealot