不過部署到 Jetty 上就發現 Jetty 瘋狂地印出 Jetty 自己運行時的 debug log
變成要在 log 海中找到自己的 application log 非常花時間。
花了些時間搜尋之後,發現其實 Jetty 根本沒吃到我寫在專案的 src/main/resources 裡的 logback.xml 檔
從 Jetty 的官方文件 [2] 看來,Jetty 的通用設定檔會放在 ${jetty.home}/resources/logback.xml 這個路徑
而從我看到的 log 來說,大多數的 Jetty log 都來自 o.e 和 org.eclipse.jetty 兩個 package
因此解決方法就是在 Jetty 的 resources 資料夾中,建立 logback.xml 這個設定檔
並且寫入以下的內容:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- Define the default standard out appender for outputing logs. --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5level | %logger{36} [%thread] | %msg%n</Pattern> </layout> </appender> <!-- Ignore the debug logs from Jetty. --> <logger name="o.e" level="INFO" additivity="false" /> <logger name="org.eclipse.jetty" level="INFO" additivity="false" /> <!-- Set the default logging level to "DEBUG" level for loggers which are not specified above. --> <root level="TRACE"> <appender-ref ref="STDOUT" /> </root> </configuration>
上述的設定檔是說,所有的 log 只要是 TRACE 等級以上就會輸出
但是遇到 o.e 和 org.eclipse.jetty 套件(和他們的子套件)的話,則只輸出 INFO 以上的等級。
而依照設定的樣式,輸出的 log 是長這樣:
2015-10-29 18:08:36.033 | DEBUG | jndi [main] | InitialContextFactory.getInitialContext() 2015-10-29 18:08:36.034 | DEBUG | jndi [main] | Created initial context delegate for local namespace:org.eclipse.jetty.jndi.local.localContextRoot@44c5a16f 2015-10-29 18:08:36.034 | DEBUG | jndi [main] | Looking up name="comp" 2015-10-29 18:08:36.034 | DEBUG | jndi [main] | Trying thread context classloader
參考資料:
沒有留言:
張貼留言