在我們深入修改程式之前,我們還有一個要注意的地方,那就是程式 log 的設置。
Ktor 框架使用 SLF4J (Simple Logging Facade for Java)這個 facade 來處理 log。有許多的 log 框架都支援 SLF4J,比方說 java.util.logging、logback、log4j……等。
如果我們沒有安裝任何支援 SLF4J 的 log 框架,那麼可能會出現以下錯誤訊息:
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.
要解決這個問題,我們只要安裝一個 log 框架就可以囉。以下我們選 logback 來作為我們的 log 框架。
要安裝 logback,我們只要在 build.gradle
裡加上
compile "ch.qos.logback:logback-classic:1.2.3"
然後重新 gradle build
就可以了
logback.xml
要調整 log 的位置和記錄的細節,我們可以看 src/main/resources/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>
裡面將 log 放到 STDOUT,log 的文字結構為 %d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
這裡就簡單的介紹Ktor 框架裡 log 的機制。至於實務上需要的規則是什麼,又如何根據實務規則調整 logback.xml
,我們可以看 logback manual 來進行調整。