【Angular】開発時とリリース時のconsole.log制御

これでいいのか

前提条件として開発時はenvironment.ts、リリース時はenvironment.prod.tsを使用する

service化などはせずに、よく使用するcommon.tsみたいな共通関数群を作成して、下のソースをコピペ。

実行

console.logではなく、Debug().logと記載する。これで開発時はconsoleが使われ、リリース時は何も動作しなくなる。

【蛇足】何故そうしたのか

正統方なやり方はisDevModeで分岐させることだろう

面倒クセと思った。また、if分の書き忘れでリリース時に出なくて良いconsoleが出てしまう可能性がある。関数化してしまえばconsole関数は1箇所にしか使われないためgrepなどで簡単に調べる事ができる

chromeブラウザではconsole.logを発行した場合、オリジナルのtsファイルの行数を表示され、クリックすることによりジャンプすることができる。service化なども試みたが、service.tsに記載されているconsole.logの行が表示されてしまい、どこのconsole.logかが判断出来ない状態になる。traceなどのコマンドで呼び出し元、行番号は取得できたが、それはtsから生成されたjsファイルが指定される。

他のパッケージを使わなかった理由

Angularはクライアントサイドで動くためリリース時にはログ収集したい場合はサーバーに送るしかない。そのことを踏まえて、リリース時のconsole関数は無意味と考えた。VS Codeでデバックは簡単に行えるため、consoleの使い道はあくまでObjectデータやtraceの確認にすぎない。SSRの場合はlogを収集することによってどの機能がよく使われているか、エラー内容など知ることができる。Angularでも知りたいのならばサーバーにログ(データ)送信プログラムを追加するしかないだろう。

スポンサーリンク
レタリング(大)広告
レタリング(大)広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レタリング(大)広告