2016-07-04 43 views
0

我在服務器A上有一個REST服務。服務正在做一些東西並記錄一些消息,這要歸功於log4j。將日誌從REST服務發送到HTML頁面

另外,我有一個服務器B上的網頁,通過AJAX調用服務並獲得響應。除了接收到響應(對我來說工作正常)之外,我想在頁面上打印來自服務器端的日誌消息。

換句話說,我希望每當服務器A端有新的日誌消息時,視圖就會顯示它。

任何想法,以實現這一目標?

編輯: 如何使用websocket從log4j套接字appender檢索日誌?

+0

在db中存儲日誌聽起來更容易 – HRgiger

+1

log4j是一個開發人員的語言級別。不要將它與業務需求混合在一起。只需實現另一個業務級別的東西,通過顯式地發送信息。 – kan

+0

@kan有好的一點 – HRgiger

回答

0

我終於找到了解決我的問題的方法:

我創建了一個單例記錄器。每次我想記錄一條消息時,我都會獲取記錄器的實例,並將新消息添加到日誌的ConcurrentLinkedList。

另一方面,我創建了一個新的休息服務。我每秒鐘都會用ajax查詢來調用這個服務。它刪除列表的日誌消息並返回它們。視圖顯示它們。

0

您將創建一個REST端點來檢索原始日誌數據爲text/plain。這可能是一些如下:

GET /logs HTTP/1.1 
Accept: text/plain 

你也可以提供一些查詢字符串參數來篩選按日期和時間日誌,如下:

GET /logs?from=2016-07-03T10:00:00Z&to=2016-07-04T10:00:00Z HTTP/1.1 
Accept: text/plain 

那麼你的客戶端可以請求這樣的端點,檢索他們想要的數據並將日誌顯示在HTML頁面中。

如果您希望在服務器端渲染HTML頁面,而不是接受text/plain,請接受text/html


對於實時記錄,您可以考慮WebSockets

+0

然後如果我想實時檢索日誌,我可以每秒執行一次ajax請求到端點,並更新顯示html頁面上日誌的div。你認爲這是一個很好的解決方案嗎? – L01c

+1

@ L01c對於實時,你可以考慮websockets。 –

相關問題