所以我試圖爲我的網絡應用程序創建日誌記錄。它用前端的HTML/CSS/JS和後端的PHP編寫,使用MariaDB數據庫。我試圖在我的所有代碼中爲錯誤/警告等創建日誌記錄。這意味着,不僅僅是PHP代碼,還有JS(也許將來會有更多的語言)。 PHP和JS中的大多數處理已經完成,JS錯誤通過AJAX發送到服務器。現在我遇到的問題是,將這些錯誤保存到數據庫的最佳方法是什麼?(錯誤)記錄的最佳實踐
現在我有在數據庫中的錯誤,它看起來像這樣1個表:
id BIGINT (10) -- Primary Key
message TEXT -- The error message
type VARCHAR (255) -- warning/error/notice/deprication etc...
origin VARCHAR (255) -- JS/PHP etc...
account_id BIGINT (10) -- Foreign Key to an account table
c_dt DATETIME -- Creation datetime
u_dt DATETIME -- Update datetime
d_dt DATETIME -- Delete datetime (implementation of soft delete)
注意:這是不一樣的審計日誌,這是在不同的表來實現。
澄清; message
只是一個單一的格式化字符串,它是從拋出的事件中創建的。此字符串的幾個實際的例子是:
- phpHandler抓以下事件:2:的mysqli :: real_escape_string()預計參數1是字符串,數組給定。文件:\ path \ to \ the \ databaseManager.php,行:206.
- ReferenceError:myfunc未定義。文件:myFile.js行:22列:70
- phpHandler遇到以下事件:8:未定義的索引:例程。 File:\ path \ to \ the \ Entrance.php,Line:7.
但是,我不能(很容易)抓住,例如,字符串中的行號。或按文件名分組,看看哪些文件造成最大的麻煩。當然,添加文件名或行號等列將會解決這個問題。但是並不是所有的語言在發生錯誤時都會提供相同的信息。例如,JS中的錯誤對象具有列號,文件名,行號,瀏覽器名稱等等,但PHP在這方面的信息少得多。如果我想在未來實現更多(後端)語言,則只會有更多的信息差異。
所以我的問題是,將錯誤保存到數據庫的最佳做法是什麼?每個(組類似)語言自己的表與各自的信息? 1列有很多列?只保存基本信息,如文件/行號嚴重性?
此外,我可能忽略了上述解決方案的一些優點和缺點?
看看[求助/上話題] – pvg
我看來像某種** [YAGNI(HTTPS://en.wikipedia。org/wiki/You_aren%27t_gonna_need_it)** ...誰將使用(讀取)該表格,以何種用例。其他選項可用,儘量不要推出自己的。 – YvesLeBorg
我想通過Sentry的PHP客戶端,它抓住相鄰的源和堆棧本地:https://github.com/getsentry/sentry-php。 對於JS,你可能想要考慮不同的瀏覽器有不同的棧跟蹤。 Sentry的JS客戶端也可以在這裏幫助https://github.com/getsentry/raven-js – ehfeng