Logging in Ktor

预计阅读时间:2分钟

Ktor使用SLF4J进行日志记录.

SLF4J Providers

如果不添加日志记录提供程序,则在运行应用程序时将看到以下消息:

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.

我们可以设置日志记录以删除这些警告消息,并通过添加提供程序来更好地了解应用程序的状况.

提供程序使用Java的ServiceLoader机制,因此可以自动发现和添加提供程序,而无需执行任何其他代码.

Logback provider

您可以使用logback ,它是log4j的后继者,作为SLF4J提供程序:

Gradle’s build.gradle or build.gradle.kts:

compile("ch.qos.logback:logback-classic:1.2.3")

Mavens’s pom.xml:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

添加后,运行该应用程序,您现在应该在IDEA的"运行"窗格中看到日志消息. 但是,这些日志记录消息没有像他们那样有用.

Configuring the Logback provider

如果默认日志记录不够用,可以在您的src/main/resources文件夹中放置一个logback.xmllogback-test.xml (具有更高优先级)文件来调整日志记录(如果它对您没有用). 例如:

logback.xml
<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>

添加后,如果停止应用程序,然后再次运行它,请在浏览器中转到localhost:8080后,现在应该在IDEA运行窗格中看到一条日志消息,如下所示:

2017-05-29 23:08:12.926 [nettyCallPool-4-1] TRACE ktor.application - 200 OK: GET - /

您可以安装" 呼叫记录"功能来捕获和记录请求.

要了解如何更改logback.xml配置文件和更改日志记录,请参阅logback手册 .

Accessing the main logger

ApplicationEnvironment接口具有log属性. 您可以使用call.application.environment.logApplicationCall访问它.

by  ICOPY.SITE