2011-05-31 123 views
6

尋找關於如何解決以下問題的輸入。我的ColdFusion 9應用程序有一個簡單的記錄器,可以將文本寫入文件。在我的開發機器上,該文件是本地的,所以我可以使用'tail -f'或CFB的TailView來觀看它。我想要一個工具在部署在生產服務器上時觀察它。 catch:生產是在共享的CF主機提供商不允許RDS文件訪問或目錄觀察者網關。我想知道一個帶有元刷新標籤的頁面,或者如果我想獲得更多的花式,AJAXy可以達到同樣的效果。思考?任何已經存在的工具?通過HTTP在Web服務器上追蹤文本文件

我可以嘗試用這一點,但我希望有東西在那裏「更完整」:following a log file over http

+0

看看http://www.coldfusionjedi.com/index.cfm/2009/4/12/Using-ColdFusion-to-get-the-文件結尾 - 您只需要每分鐘左右添加一次刷新。 – 2011-05-31 15:28:41

+0

您可以嘗試HTML5的Se rver-Sent Events,如果你想要好的流媒體解決方案。 – Henry 2011-05-31 17:13:28

回答

0

下面的僞代碼由this Java solution的啓發,並沒有在所有被測試:

if (NOT structKeyExists(application, "log") { 
    application.log = fileOpen('log.txt', 'read') 
} 

while(NOT FileisEOF(application.log)) { 
    writeOutput(fileReadLine(application.log) & "<br/>"); 
} 

把這個放在一個帶有元刷新的頁面上,我想你可能是在做生意。

+0

謝謝,orangepips。日誌文件通常有問題,例如它們很大。我不想重複發送相同的1MB數據來獲得最新的10行。我現在正在考慮純粹使用AJAX和HTTP的HEAD請求來查看Content-Length的客戶端。如果該值已經從先前的值改變,則使用HTTP範圍字段進行GET,以僅將更新後的數據附加到DOM。似乎應該已經存在的東西,所以我正在谷歌搜索...... – DaveBurns 2011-05-31 15:51:48

+0

你不是反覆發送相同的數據,因爲文件引用只創建一次並且保存到應用程序範圍中。所以每個刷新只顯示新添加的行。 – orangepips 2011-05-31 16:18:26

+0

啊,當然。您如何看待上述情況將處理日誌翻轉? – DaveBurns 2011-05-31 19:07:56

-1

我知道這是相當古老的學校,但你有沒有考慮過登錄到數據庫?如果您爲表中的日誌條目添加時間戳,則可以使用HTTP緩存標頭與服務器通信應該看到哪些新數據。

+1

它跨越了我的想法。登錄到數據庫是人們喜歡或憎恨的事情之一 - 不知何故,它會變得虔誠。我是那些感覺太重量級的人之一。討論的好話題 - 謝謝。 – DaveBurns 2011-06-01 19:17:09

1

您可以將下面的PHP腳本:

<?php 
header("Content-Type: text/plain"); 
set_time_limit(0); 
passthru("tail -F -n +0 log.txt"); 
?> 
+0

我在/ var/log/syslog上的Mac OS X上試過這個,在瀏覽器窗口中沒有任何東西出現,直到我停止php服務器。任何想法如何定期刷新輸出? – 2014-04-08 18:19:04

0

我創建以下bash腳本我用例(tail.sh

它使用「山貓」獲取文件的列表,從中獲得文件大小需要,並在無限循環試圖獲得部分文件

相關問題