Knowledge Base

¿Qué es esto?

Kotlin: Error ktor: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"

26/02/2018 - 27/12/2018 -  Comentarios - Kotlin Ktor Errores

Para resolver el error con esta traza completa:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Debemos añadir lo siguiente a las dependencias de gradle:

compile "ch.qos.logback:logback-classic:1.2.1"

De manera que nos quedarían de una forma similar a la siguiente:

dependencies {

    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

    testCompile group: 'junit', name: 'junit', version: '4.12'

    compile "org.jetbrains.ktor:ktor-core:$ktor_version"

    compile "org.jetbrains.ktor:ktor-netty:$ktor_version"

    compile "ch.qos.logback:logback-classic:1.2.1"

}

Ahora, podremos reiniciar nuestro servidor y nos mostrará los mensajes de depuración en la consola:

19:56:27.833 [main] DEBUG io.netty.buffer.ByteBufUtil - -Dio.netty.allocator.type: pooled

19:56:27.833 [main] DEBUG io.netty.buffer.ByteBufUtil - -Dio.netty.threadLocalDirectBufferSize: 65536

19:56:27.833 [main] DEBUG io.netty.buffer.ByteBufUtil - -Dio.netty.maxThreadLocalCharBufferSize: 16384

Si queremos que nos muestre unos logs más entendibles y útiles, deberemos añadir un fichero llamado logback.xml al directorio src/main/resources con el siguiente contenido:

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

        <encoder>

            <pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>

        </encoder>

    </appender>

    <root level="trace">

        <appender-ref ref="STDOUT"/>

    </root>

    <logger name="org.eclipse.jetty" level="INFO"/>

    <logger name="io.netty" level="INFO"/>

</configuration>

Guardamos el fichero, reiniciamos el servidor, y veremos que nos mostrará los eventos de nuestras apis de la siguiente manera:

2018-02-26 20:02:14.316 [nettyCallPool-4-2] TRACE Application - 200 OK: GET - /