2025-04-07

Expressでloggerを設定する

ログ設計

https://qiita.com/tadashiro_ninomiya/items/19c774898c68add6185e

ログの出力場所

  1. ファイルに出力 コンソール外で起動するアプリケーションに使用します
  2. 標準出力 コンソールで起動するアプリケーションに使用します
  3. 外部ログ管理ツールのファイルに出力 Amazon CloudWatch Logsなどの外部ログ管理ツールに出力

ログのフォーマット

構造化ロギングを導入することで、ログの解析や検索が容易になるようにしました。

何のログを出すか

基本的に出すログ

  1. リクエストログ
  2. レスポンスログ

ケースに応じて出すログ

  1. ログイン、ログアウ時刻などの認証関連
  2. アプリケーションの重要イベント
  3. 外部APIとのやりとり

ロガーとconsole.logの違い

  1. cosnole.logは標準出力だけですが、ロガーは様々な出力先に出力できます
  2. ロガーはログレベルを設定できます
  3. console.logはテキスト出力ですが、ロガーは構造化ロギングができます

詳細: https://zenn.dev/redheadchloe/articles/9ede972d9af27f#%E3%83%AD%E3%82%AC%E3%83%BC%E3%81%A8console.log%E3%81%AE%E9%81%95%E3%81%84

Winstonを使ってロガーを設定する

https://github.com/winstonjs/winston

実際に作成したロガーは以下のようになりました。

アクセスログを出力する

今回はサーバーはExpressを使用しているので、expressのmiddlewareにアクセスログを追加しました

main.tsapp.use(requestLogger);を追加して、ミドルウェアを登録します。

Thanks for the visit Nozo Blog