請問如何將 log (or console.log )訊息寫入到server 端以方便除錯?

在學習 Angular的時候, console.log () 都是寫到 client 端。
請問有沒有辦法讓這些 log 訊息能寫到 server 端?
否則上production 之後,如果有問題,有時很難抓錯。
且上 production 環境之後,我都會把 console.log 重新定義,使得 console.log() 寫不出東西,以免被駭客蒐集資料。
因此,能將 log 訊息寫到 server 端就變成很重要的課題。

1個讚

將 logger 寫成 service, 這樣你就可以真的 build 環境抽換 logger service. 不同的logger 做不同的事情,component 端也不需要改變

現成的套件, 也可以把 log 往 server 傳

謝謝告知。
這個套件,我看過。他需要另一個 server 提供 api 讓 ngx-logger 去呼叫,然後把訊息送到 server side。
這點說麻煩也不麻煩,說有點麻煩也是有點麻煩。
不麻煩的地方在於,Angular 是個純前端的架構,所以原本就勢必要有個後端的 API Server 搭配。所以把 log api 寫在這 backend api server 就可以。
但是,麻煩的地方在於。這個 backend log api 勢必要開放無任何保護。容易變成駭客猛攻的攻擊點。
當然,如果網站是有要求用戶進行登入行為的,那可以把 log api 加上session 的保護,使得 backend log api 僅有在用戶登入網站後 ngx-logger 才能呼叫 backend log api。但這樣一來,在用戶未登入網站前,ngx-logger 就無法呼叫 backend log api。此時如果網站問題,就不容易偵測得到。

另外一個問題點是, Angular CLI其實有後端的,不是嗎?他不是號稱是 SSR (Server Side Rendering)嗎?所以他應該是自己就可以提供 server side log 功能了,不是嗎?

SSR 並不是後端. 那個只是一個頁面 render 的技術。基本上是透過 node.js 先跑過 angular 頁面取得產生後的 HTML DOM 內容後,在往前面送,並不是後端技術

  1. Angular 就是純前端的架構, 不開任何後端去接就期望 server 能夠 log client 端資訊是錯誤的期待
  2. SSR 是做 server side rendering, 所以照你說在 server side log 是會有, 但只會有 “產生畫面時” 的 log, 當資料都在瀏覽器呈現後, 就是前端的事情, 所以之後的 log 依然在瀏覽器

要先弄清楚前端和後端各自可以做什麼和不能做什麼, 才能釐清到底該怎麼做才是對的

1個讚