正式環境的log
因為分散式系統的關係
通常都會使用ELK來做視覺化的查詢
不過測試環境的Log
有時候會因為公司機器架構的關係
沒有使用ELK
需要直接進入機器查看Log
每次查看linux的測試環境Log
雖然沒有到痛不欲生
但總是覺得不勝其擾
後來聽同事分享
才知道有辦法不用透過ELK
直接在網頁瀏覽log
因為linux通常都會安裝python
又python有一個功能為SimpleHTTPServer
所以只要在linux的log根目錄
執行python指令
1 2 3 4 5
| # python2 python -m SimpleHTTPServer
# python3 python -m http.server
|
就可以在 http://localhost:8000
用網頁瀏覽資料夾裡面的內容
不過實際狀況當然沒有那麼單純
還會遇到中文亂碼
Port號被占用
log檔案預設為下載等等問題
所以必須調整一下HTTPServer的內容
python2語法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import SimpleHTTPServer import SocketServer
class InlineHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): def end_headers(self): is_file = not self.path.endswith("/") if is_file: self.send_header("Content-Disposition", "inline") self.send_header("Content-Type", "text/html; charset=utf-8") SimpleHTTPServer.SimpleHTTPRequestHandler.end_headers(self)
handler = InlineHandler httpd = SocketServer.TCPServer(("", 7999), handler)
print("Serving on port 7999") httpd.serve_forever()
|
python3語法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import http.server import socketserver
class InlineHandler(http.server.SimpleHTTPRequestHandler): def end_headers(self): is_file = not self.path.endswith("/") if is_file: self.send_header("Content-Disposition", "inline") self.send_header("Content-Type", "text/html; charset=utf-8") super().end_headers()
handler = InlineHandler httpd = socketserver.TCPServer(("", 8001), handler) print("Serving on port 8001")
httpd.serve_forever()
|
然後使用python執行自定義的.py
就可以正常瀏覽Log了
記得執行指令前
使用sudo,避免沒有權限瀏覽Log檔案