java - ¿Cómo deshabilitar el mensaje de auto-anuncio de JooQ en 3.4+?
logging (4)
En caso de que esté utilizando org.slf4j.Logger
para el registro, en sus resources/logback.xml
puede agregar algo así.
<logger name="org.jooq" level="warn" additivity="false"> <appender-ref ref="STDOUT" /> </logger>
Soy un gran fan de JooQ, pero desafortunadamente desde la actualización a 3.3, imprime un mensaje muy molesto en la consola cada vez que sale mi código:
Feb 02, 2015 7:28:06 AM org.jooq.tools.JooqLogger info
INFO:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<snip>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Thank you for using jOOQ 3.5.1
Lamentablemente no puedo eliminar este registro en absoluto.
Tenga en cuenta que no uso slf4j, ni log4j ni ninguna API de registro; Por lo tanto, el único mecanismo que tengo disponible es jul.
He intentado deshabilitarlo completamente usando esto:
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);
});
}
Desafortunadamente, no funciona, el mensaje sigue apareciendo.
¿Cómo puedo hacer que este mensaje desaparezca antes de modificar el código, que quiero evitar aquí?
En v3.6 y superiores puedes hacer:
System.getProperties().setProperty("org.jooq.no-logo", "true");
Ese mensaje se encuentra en el archivo fuente org.jooq.impl.DefaultRenderContext y usa el registrador org.jooq.Constants . Aquí está el código fuente relevante:
/* [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] */
Parece que el mensaje se genera porque está utilizando una versión de prueba. Asumiría que la actualización a la versión pro deshabilitaría el mensaje. ¿Qué otra manera podría ser una mejor manera de demostrar que eres un gran fanático del proyecto?
De lo contrario, si puede vivir con la culpa y la vergüenza , podría deshabilitar los mensajes de información del registrador org.jooq.Constants configurando el nivel en ADVERTENCIA.
Esto se puede hacer agregando lo siguiente a su logging.properties:
#ThanksNoThanks
org.jooq.Constants.level=WARNING
O en código Java llamando a los siguientes métodos:
//SorryNotSorry Logger.getLogger("org.jooq.Constants").setLevel(Level.WARNING);
Asegúrese de cumplir con su Acuerdo de Licencia y Mantenimiento 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
*/
Esto parece funcionar para mí:
static {
LogManager.getLogManager().reset();
}
Esto también se indica como una solución un par de veces en esta pregunta de desbordamiento de pila .
Tenga en cuenta que la versión 3.6+ también se enviará con una propiedad del sistema que se puede usar para desactivar la visualización de este logotipo :
-Dorg.jooq.no-logo=true