JavaScript Tips | ログ・デバッグ・エラー処理:WARNログを出力する

JavaScript JavaScript
スポンサーリンク
スポンサーリンク

WARNログは「異常の一歩手前」を知らせるための重要なアラートログ

WARNログは、エラーほど深刻ではないものの、 「このまま進むと問題になるかもしれない」 という状況を知らせるためのログです。

業務システムでは、次のような場面で WARNログが活躍します。

  • API のレスポンスが遅い
  • 想定よりデータ件数が多い
  • 設定値が推奨範囲を超えている
  • リトライで成功したが、本来は一発で成功すべき
  • 外部サービスが不安定

つまり WARNログは、 「まだ壊れてはいないが、注意すべき状態」 を記録するためのログです。

初心者は「エラーじゃないならログ不要」と考えがちですが、 WARNログがあることで障害の予兆を早期に発見でき、 本番環境の安定性が大きく向上します。

WARNログの基本構造は「レベル+時刻+メッセージ」

WARNログは次の 3 要素で構成されます。

  • ログレベル:WARN
  • 時刻(タイムスタンプ):いつ起きたか
  • メッセージ:何が起きたか

この形式を統一することで、ログが読みやすくなり、 後から検索・分析しやすくなります。

WARNログの最小構成(まずはこれだけで十分)

function getTimestamp() {
  const d = new Date();
  const pad2 = (n) => String(n).padStart(2, "0");
  return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} `
       + `${pad2(d.getHours())}:${pad2(d.getMinutes())}:${pad2(d.getSeconds())}`;
}

function warnLog(message) {
  console.warn(`[WARN] [${getTimestamp()}] ${message}`);
}
JavaScript

使用例

warnLog("APIレスポンスが遅延しています");
warnLog("設定値 maxRetry が推奨値を超えています");
JavaScript

出力例:

[WARN] [2026-08-10 11:25:00] APIレスポンスが遅延しています
[WARN] [2026-08-10 11:25:01] 設定値 maxRetry が推奨値を超えています

WARNログを深掘り:なぜ「注意喚起ログ」が重要なのか

1. 障害の予兆を早期に発見できる

WARNログは「まだ壊れていないが危険な状態」を知らせます。 これがあるだけで、障害発生前に対策できます。

2. エラーと INFO の間を埋める

INFO だけでは正常系しか分からず、 ERROR だけでは「突然壊れた」ように見えます。 WARN があることで「壊れる前の兆候」が分かります。

3. 本番環境の安定性が向上する

WARNログを監視することで、 負荷増大や外部サービスの不安定さを早期に検知できます。

4. チーム開発で「注意すべきポイント」が共有される

WARNログは「ここは危険な処理」という情報共有にも使えます。

WARNログを強化する:オブジェクト対応

業務では「詳細情報をオブジェクトでログに出したい」場面が多いです。

warnLog({ api: "UserAPI", delay: 1200 });
JavaScript

これを安全に扱うために、 オブジェクトを JSON に変換する処理を追加します。

function safeStringify(value) {
  try {
    return typeof value === "string" ? value : JSON.stringify(value);
  } catch {
    return "[Unserializable Object]";
  }
}

function warnLog(message) {
  console.warn(`[WARN] [${getTimestamp()}] ${safeStringify(message)}`);
}
JavaScript

WARNログをさらに強化する:コンテキスト(文脈)を付ける

業務では「どの処理で起きた WARN か」を知りたい場面が多いです。

function createWarnLogger(context) {
  return function(message) {
    console.warn(`[WARN] [${getTimestamp()}] [${context}] ${safeStringify(message)}`);
  };
}
JavaScript

使用例

const apiLogger = createWarnLogger("UserAPI");
apiLogger("レスポンスが遅延しています");
JavaScript

出力例:

[WARN] [2026-08-10 11:25:00] [UserAPI] レスポンスが遅延しています

WARNログの業務テンプレート(完成版)

export const Logger = {
  pad2(n) {
    return String(n).padStart(2, "0");
  },

  timestamp() {
    const d = new Date();
    return `${d.getFullYear()}-${this.pad2(d.getMonth() + 1)}-${this.pad2(d.getDate())} `
         + `${this.pad2(d.getHours())}:${this.pad2(d.getMinutes())}:${this.pad2(d.getSeconds())}`;
  },

  stringify(value) {
    try {
      return typeof value === "string" ? value : JSON.stringify(value);
    } catch {
      return "[Unserializable Object]";
    }
  },

  warn(msg, context = "") {
    const ctx = context ? `[${context}] ` : "";
    console.warn(`[WARN] [${this.timestamp()}] ${ctx}${this.stringify(msg)}`);
  },
};
JavaScript

WARNログを使った実務テンプレート

API の遅延を検知する

Logger.warn("APIレスポンスが1秒を超えています", "UserAPI");
JavaScript

設定値が推奨範囲を超えている

Logger.warn({ key: "maxRetry", value: 10 }, "ConfigCheck");
JavaScript

外部サービスが不安定

Logger.warn("外部サービスのステータスが unstable です", "ExternalService");
JavaScript

まとめ:WARNログは「障害の予兆を知らせる重要なアラート」

WARNログを正しく扱うことで、次のメリットが得られます。

  • 障害の予兆を早期に発見できる
  • エラー発生前の兆候が分かる
  • 本番環境の安定性が向上する
  • チームで注意すべきポイントを共有できる
  • INFO と ERROR の間を埋める重要なログになる

WARNログは「まだ壊れていないが危険な状態」を知らせる、 システムの安全装置のような存在です。

共通 Logger と組み合わせて WARNログを整備しておくことで、 どの場面でも安定したログ管理ができるようになります。

タイトルとURLをコピーしました