2017-08-31 70 views
0

我有一個用作事件記錄器的Spring Boot應用程序。每個客戶端通過REST api發送不同的事件,然後保存在數據庫中。但除了簡單事件之外,我還需要客戶將其執行日誌發送到Spring Boot。有沒有辦法將日誌流式傳輸到Spring Boot應用程序?

現在,在客戶端執行完成後上傳日誌很容易,並且有很多示例。我需要的是在客戶端正在執行時逐行傳輸日誌,而不是等到客戶端完成。

我花了很長時間搜索一個可能的答案,我找不到任何符合我需要的東西。任何建議如何使用Spring Boot(包括未來版本)來做到這一點?這可行嗎?

+0

您能更清楚地瞭解涉及哪種客戶?假設你正在編寫客戶端並控制它們的行爲,並且它們也是用Java編寫的,那麼你可以爲你使用的任何日誌框架創建你自己的Appender,並且Appender可以爲每個日誌語句打開你的REST API,而不是寫入文件。我建議通過在Appender實現中產生另一個線程來異步執行實際的REST調用。 – John

+0

@John客戶端是Java SE,是的,我正在爲他們編寫代碼。 [安德魯](https://stackoverflow.com/users/1898535/andrew-kaluzniacki)已經提出了類似的東西,所以appenders將是我要嘗試的第一件事。謝謝回覆! –

回答

0

我在這裏看到了一些可能性。首先,考慮在客戶端使用一個logback(默認的Spring Boot日誌實現)SocketAppender或ServerSocketAppender。參見:https://logback.qos.ch/manual/appenders.htm。這可以讓你發送日誌消息到任何日誌服務。 但我可能會建議您不要登錄到您的Spring Boot Event應用程序,因爲我懷疑這會不必要地增加您的應用程序的複雜性,並且我可以看到事件應用程序中存在一些錯誤並導致客戶端記錄一堆的情況的錯誤,這些錯誤又會回到事件應用程序,從而難以確定最初的錯誤。

我會建議您改爲登錄日誌記錄服務器 - 例如,logstash:https://www.elastic.co/products/logstash,或者如果您已經有一個要保存事件的數據庫,則可以使用日誌DBAppender並寫入日誌直接到數據庫。

+0

我已經考慮過logstash(和整個麋鹿堆棧),我只是不知道它如何適合我的安全設置。而且我不想爲該項目增加額外的複雜程度。另一方面,appender看起來像是一個非常直接的解決方案,所以我會先嚐試那個。謝謝你的回答! –

+0

如果你看起來你可能會找到一個logback http appender: https://github.com/kewang/logback-http-appender https://stackoverflow.com/questions/38271359/logback-appender-郵件發送到http消息 –

+0

最後我確實選擇了Logstash。我在我的Spring Boot應用程序中添加了一個日誌控制器,它接受來自客戶端的http日誌appender的請求。控制器從客戶端收到的所有內容都只是登錄到一個單獨的日誌文件中。然後,我簡單地將Logstash掛接到該日誌文件。我不知道它是否是理想的設置,但它至少允許我使用現有的Spring Boot安全性。 –

相關問題