不過部署到 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 這個設定檔
並且寫入以下的內容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<? 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 是長這樣:
1 2 3 4 |
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 |
參考資料:
沒有留言:
張貼留言