Web サイト上で JavaScript のエラーが発生した時、エラーログに残るとうれしいです。しかしながらこういった時の JavaScript はブラウザ上で動いており、基本的にブラウザ上でエラーも完結します。そこでエラー発生時に自動でその内容を API に投げ、API の中でエラー内容を保存することを考えます。これは次のコードでできます。
<script> /** * @see https://developer.mozilla.org/ja/docs/Web/API/Window/error_event * @param message * @param file * @param lineNo * @param colNo * @param error */ window.onerror = function (message, file, lineNo, colNo, error) { // エラーイベントが発生したらその内容をエラーログ保存APIに投げる fetch("/api/logging/error", { method: "POST", headers: { "Content-Type": "application/json", // fetch API で JSON 形式のリクエストを投げる "X-CSRF-TOKEN": "{{ csrf_token() }}",// Laravel 用 }, // 送信内容はエラー内容とどのブラウザで問題が起きるか body: JSON.stringify({ message, file, lineNo, colNo, error, userAgent: window.navigator.userAgent, }) }).catch(e => { // エラーログ保存でエラーが起きた場合はその旨をコンソールに出力 console.error(e); }); } </script>
axios 等の外部パッケージ抜きで動く小さなコードです。