前景提要
我開發了一個Java應用,部署到云環境上之后,用postman測試發現不能按照我期望的工作,但是返回的消息對我沒有任何幫助。
因為部署在云端的應用很難像本地Java應用一樣調試,所以我打算用SLF4J在Java代碼里添加一些日志,然后查看該Java應用在云端執行產生的日志來排查問題。
SLF4J的全稱是Simple Logging Facade for Java, 即簡單日志門面,這里的Facade實際上是面向對象的設計模式中的外觀模式(Facade pattern)。SLF4J不是具體的日志解決方案,它本身不包含日志記錄的具體實現,而是只提供一個外觀給各種各樣的日志系統,這樣就給具體應用提供了很大的靈活度,使得最終用戶在部署其應用時可以靈活選用其所希望的日志系統。
SLF4J的使用非常簡單,在您的應用代碼里將SLF4J的Logger和LoggerFactory導入: import org.slf4j.Logger; import org.slf4j.LoggerFactory;
然后在引用代碼里用LoggerFactory獲得logger實例:
static private Logger logger = LoggerFactory.getLogger(XCDService.class);
然后用logger.info進行日志記錄。
將加了SLF4J日志記錄的代碼重新上傳到云平臺上。我用的是SAP云平臺。
登錄SAP云平臺的控制臺,點擊Logging標簽頁:
點Configure Loggers:
因為我的應用代碼放在com.sap.service包下面,所以我根據這個包名進行過濾:
將這兩個Logger對應的Log Level日志級別設置成INFO:
再次用postman請求部署在SAP云平臺上的服務,然后去云平臺控制臺上查看生成的日志文件:
點擊查看按鈕即可看到日志的具體內容,一下子就定位出問題的原因了。我在服務器端的HTTP響應頭字段Content-type設置的值為application/json,但是返回的JSON字符串不符合JSON格式規范。把這個bug改掉之后錯誤就解決了。
要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼: