0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

dev サーバのログを汚す Chrome DevTools のリクエストに対処する

0
Posted at

こんにちは。小学生向けのニュースサイト、こどもニュースをつくっています。

開発中、DevTools を開いた状態でページを見ていると、サーバのログに知らないパスへの 404 が出続けました。

GET /.well-known/appspecific/com.chrome.devtools.json 404

自分が書いた覚えのないパスです。原因と対処を書きます。

何のリクエストか

Chrome DevTools が、開いているページに対して自動的に取りに行くファイルです。ワークスペースの自動設定などに使われるもので、無ければ無いで DevTools は普通に動きます。

つまり、実害はありません。ただ、開発サーバのログに 404 が並び続けます。

自分のアプリのログを読んでいるときに、無関係な 404 が挟まるのは地味に邪魔でした。とくに、本当の 404 を探しているときに紛れます。

対処

空の JSON を返すルートを 1 つ置きました。

export const dynamic = 'force-static';

export function GET() {
  return Response.json({});
}

これだけです。ファイルの場所は、リクエストされるパスに合わせます。

force-static を付けているのは、このサイトが静的書き出しだからです。ビルド時に静的なファイルとして出力されるので、本番でも同じレスポンスが返ります。動的なルートとして残ると、静的書き出しでエラーになります。

「無視する」より「返す」ほうが安い

対処の候補はいくつかありました。

  • サーバのログでこのパスを除外する
  • ミドルウェアで早期に返す
  • ルートを置いて空の JSON を返す

ログの除外は、ログの設定を触ることになります。開発サーバのログは Next.js が出しているので、そこに手を入れるのは大げさです。

ミドルウェアも、この 1 件のために置くには重いです。

結局、4 行のファイルを 1 つ置くのがいちばん安く済みました。「無視する仕組み」を作るより、「期待されているものを返す」ほうが単純なことがあります。

似たものが他にもある

同じ性質のリクエストは他にもあります。

  • /favicon.ico(アイコンを設定していないとき)
  • /apple-touch-icon.png
  • /robots.txt
  • ブラウザ拡張が取りに行くファイル

いずれも、無ければ 404 が出ます。実害は無いものが多いのですが、ログが読みにくくなります。

判断としては、次のように分けています。

  • サイトとして返すべきもの(favicon、robots.txt)はちゃんと作る
  • ツールが勝手に取りに行くもので、空でよいものは空を返す
  • どこから来ているか分からないものは、まず調べる

3 つ目が大事で、知らないパスへのアクセスを全部黙らせると、本当に困る兆候まで見えなくなります。まず「これは何のリクエストか」を調べて、それから黙らせります。順序を逆にしないようにしています。

開発時のノイズは減らす価値がある

こういう対処は、機能としては何も生みません。それでも手を入れる価値はあると思っています。

ログにノイズが混ざっていると、ログを読まなくなります。読まなくなると、本当の異常を見逃します。「いつも出ているやつ」が増えるほど、ログの価値が下がっていきます。

同じ理由で、このプロジェクトでは E2E で使う静的ファイル配信のリクエストログも抑止しています。ビルドのログは残して、1 リクエストごとのログだけを止める、という設定です。

出力するかどうかは、その情報を実際に読むかどうかで決めます。読まないものは出さないほうが、読むものが目立ちます。

まとめ

  • Chrome DevTools は開いているページに対して特定のパスを取りに行く。無ければ 404 が出続ける
  • 実害は無いが、開発サーバのログが読みにくくなる
  • 空の JSON を返すルートを 1 つ置くのがいちばん安い。ログの除外設定より単純
  • 静的書き出しのサイトでは、静的なルートとして出力させる
  • 知らないパスをまず調べる。全部黙らせると本当の兆候まで見えなくなる
  • 読まないログは出さない。ノイズが増えるとログ自体を読まなくなる
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?