Ajustar el nivel de Registro de apache commons logging?

Tengo una sencilla aplicación de consola que utiliza apache PDFBox de la biblioteca, que a su vez utiliza commons logging. Estoy recibiendo un montón de mensajes de correo no deseado en mi consola que me gustaría suprimir:

Feb 15, 2011 3:56:40 PM org.apache.pdfbox.util.PDFStreamEngine processOperator
INFO: no admitidos/desactivado operación: EI

En mi código, he probado a restablecer los niveles de registro fue en vano:

Logger.getLogger("org.apache.pdfbox.util.PDFStreamEngine").setLevel(Level.OFF);
Logger.getLogger("org.apache.pdfbox.util").setLevel(Level.OFF);
Logger.getLogger("org.apache.pdfbox").setLevel(Level.OFF);

A pesar de estos ajustes, los mensajes siguen apareciendo en la consola. Recuperar el objeto del registro de Commons logging tampoco ayuda, ya que no parece haber una manera de establecer el nivel.

Hay una manera de suprimir estos mensajes mediante programación? O tengo que agregar un archivo de configuración?

InformationsquelleAutor user364902 | 2011-02-15

4 Kommentare

  1. 5

    Commons-logging es sólo un registro de la fachada, lo que significa que no proporcionan el código que realmente escribe el logdata por ejemplo, en el disco. Lo que usted necesita para cambiar la configuración para el registro real de la implementación (tales como logback, log4j, sl4fj etc). Si no hay esa biblioteca se encuentra el valor predeterminado es java.util.logging.

    Yo recomendaría poner por ejemplo, log4j en el classpath y agregar un log4j.xml archivo de configuración en el classpath. La mera presencia de log4j en el classpath es en este caso suficiente para inicializarlo. Log4j también puede ser configurado mediante programación.

    • Estoy usando el registro de java (es decir, no tengo ninguna otra biblioteca de registro del presente). Y sin embargo parece estar haciendo caso omiso de la especificación de nivel en Java.util.logger.
    • Usted puede con un propiedades archivo, aunque yo generalmente asesoramiento contra java.util.la tala de árboles.
  2. 2

    Esto funciona para mí:

    String[] loggers = { "org.apache.pdfbox.util.PDFStreamEngine",
            "org.apache.pdfbox.pdmodel.font.PDSimpleFont" };
    for (String logger : loggers) {
      org.apache.log4j.Logger logpdfengine = org.apache.log4j.Logger
             .getLogger(logger);
      logpdfengine.setLevel(org.apache.log4j.Level.OFF);
    }
  3. 1

    Apache commons-logging utiliza algún otro marco de registros por debajo (java.util.logging o Log4J), tienes que investigar que uno utiliza en su proyecto y establecer adecuados niveles de registro no.

    • Estoy usando el registro de java (es decir, no tengo ninguna otra biblioteca de registro del presente). Y sin embargo parece estar haciendo caso omiso de la especificación de nivel en Java.util.logger.
  4. 1

    En caso de que usted no tiene tiempo para averiguar que el Registro de aplicación se utiliza por debajo de la de Apache commons-logging, pruebe a deshabilitar todos los que hay en ti classpath. Siguientes pruebas de código de tres implementaciones.

    Si alguna de las líneas no se compila, no agregue la dependencia! Sólo hay que quitar la línea.

    String[] loggers = { "org.apache.pdfbox.util.PDFStreamEngine",
        "org.apache.pdfbox.pdmodel.font.PDSimpleFont", "httpclient.wire.header" , "httpclient.wire.content"
    for (String ln : names) {
      //Try java.util.logging as backend
      java.util.logging.Logger.getLogger(ln).setLevel(java.util.logging.Level.WARNING);
    
      //Try Log4J as backend
      org.apache.log4j.Logger.getLogger(ln).setLevel(org.apache.log4j.Level.WARN);
    
      //Try another backend
      Log4JLoggerFactory.getInstance().getLogger(ln).setLevel(java.util.logging.Level.WARNING);
     }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein