2013-10-21 47 views
3

我正在使用NodeJS開發應用程序並部署在Heroku中。在heroku中記錄多行消息

我需要記錄多行消息(例如堆棧跟蹤和其他多行信息),但希望將它們保留爲每個日誌消息。

的問題是,當使用console.log(或使用console.log/stdout任何框架)具有多行消息它解釋等多個消息由Heroku的(一個消息每行的原始消息中)。

我認爲問題在於,Heroku的從過程stdout讀取消息和線不能區分饋送(LF/CR)在一個消息中或在多個消息中的換行,從而產生每行一個消息。

我試圖直接發送消息到系統日誌(使用ain2),而不是標準輸出,它適用於多行消息,但只適用於我的本地環境。

我想在使用logplex/syslog的Heroku中做同樣的事情嗎?但是在使用帶有默認參數(本地主機,UDP,端口514)的系統日誌時無法獲得我的消息記錄。

是否有任何其他方式來記錄Heroku中的多行消息的工作?這是平臺上的不足嗎?

回答

0

我什至不知道你會如何成功的堆棧跟蹤,因爲這最終是基於syslog,和Heroku上可能對單一syslog線的長度是有限的。但是,不確定,當然也不知道這個限制。

你可以做的是每\n\n>>>(即:用「>>>」開始每個延續行),然後在你的日誌處理代碼中相應地解析它。

+0

謝謝,我已經測試了一些正常的消息大小,似乎沒問題。如果我使用更長的消息(大約2KB),他們似乎會被修剪。但無論如何,無論有沒有換行符,都會發生這種情況。 –

+0

替換選項可能是一個選項,但仍在尋找不需要任何預/後處理的選項,並且使消息更具人性化可讀性。 –