INFOログは「正常動作を記録するための最も基本で最も重要なログ」
業務システムでは、エラーだけでなく 正常に動いていることを記録する INFOログ が非常に重要です。 なぜなら、障害調査やデバッグでは「どこまで正常に動いていたか」を知ることが、 問題の原因を特定するための大きなヒントになるからです。
INFOログは、
- バッチ処理の開始
- API 呼び出しの成功
- データ取得の完了
- ユーザー操作の記録 など、「システムが期待通りに動いていること」を知らせる役割を持ちます。
ここでは、初心者でも理解しやすいように、 INFOログの考え方、実装方法、業務で使えるテンプレートを 例題とコードを交えて丁寧に解説します。
INFOログの基本は「時刻+レベル+メッセージ」
INFOログは次の 3 要素で構成されます。
INFOログの基本構造
- ログレベル:INFO
- 時刻(タイムスタンプ):いつ起きたか
- メッセージ:何が起きたか
この 3 つを統一した形式で出力することで、 ログが読みやすく、検索しやすく、分析しやすくなります。
INFOログの最小構成(まずはこれだけで十分)
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 infoLog(message) {
console.log(`[INFO] [${getTimestamp()}] ${message}`);
}
JavaScript使用例
infoLog("バッチ処理を開始しました");
infoLog("ユーザー情報の取得が完了しました");
JavaScript出力例:
[INFO] [2026-08-10 11:19:00] バッチ処理を開始しました
[INFO] [2026-08-10 11:19:01] ユーザー情報の取得が完了しました
INFOログを深掘り:なぜ「正常動作の記録」が重要なのか
1. 障害調査で「どこまで正常だったか」が分かる
エラーだけでは「どこで止まったか」が分かりません。 INFOログがあることで、処理の流れを追跡できます。
2. 正常系のログがあると「異常系のログ」が際立つ
INFOログがあることで、エラーが発生した箇所が明確になります。
3. バッチ処理や定期処理では「開始・終了ログ」が必須
業務では「処理が実行されたかどうか」を確認する必要があります。
4. 開発者同士でログ形式が統一される
ログがバラバラだと調査が困難になります。 INFOログの統一はチーム開発の基本です。
INFOログを強化する:オブジェクト対応
業務では「オブジェクトをログに出したい」場面が多いです。
infoLog({ userId: 123, status: "OK" });
JavaScriptこれを安全に扱うために、 オブジェクトを JSON に変換する処理を追加します。
function safeStringify(value) {
try {
return typeof value === "string" ? value : JSON.stringify(value);
} catch {
return "[Unserializable Object]";
}
}
function infoLog(message) {
console.log(`[INFO] [${getTimestamp()}] ${safeStringify(message)}`);
}
JavaScriptINFOログをさらに強化する:コンテキスト(文脈)を付ける
業務では「どの処理で起きたログか」を知りたい場面が多いです。 そのため、Logger に「context(文脈)」を付けると便利です。
function createInfoLogger(context) {
return function(message) {
console.log(`[INFO] [${getTimestamp()}] [${context}] ${safeStringify(message)}`);
};
}
JavaScript使用例
const userLogger = createInfoLogger("UserModule");
userLogger("ユーザー情報を取得しました");
JavaScript出力例:
[INFO] [2026-08-10 11:19:00] [UserModule] ユーザー情報を取得しました
INFOログの業務テンプレート(完成版)
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]";
}
},
info(msg, context = "") {
const ctx = context ? `[${context}] ` : "";
console.log(`[INFO] [${this.timestamp()}] ${ctx}${this.stringify(msg)}`);
},
};
JavaScriptINFOログを使った実務テンプレート
API 呼び出しの成功ログ
Logger.info("ユーザー情報の取得に成功しました", "UserAPI");
JavaScriptバッチ処理の開始・終了ログ
Logger.info("売上集計バッチを開始しました", "SalesBatch");
// 処理…
Logger.info("売上集計バッチが正常終了しました", "SalesBatch");
JavaScriptユーザー操作の記録
Logger.info({ action: "login", userId: 123 }, "UserAction");
JavaScriptまとめ:INFOログは「システムの正常動作を記録する最も重要なログ」
INFOログを正しく扱うことで、次のメリットが得られます。
- 正常動作の流れが追跡できる
- 障害調査が圧倒的に楽になる
- ログ形式が統一される
- コンテキスト付きで読みやすくなる
- オブジェクトログにも対応できる
INFOログはただの「お知らせ」ではなく、 システムの健康状態を記録する重要な診断データ です。
共通 Logger と組み合わせて INFOログを整備しておくことで、 どの場面でも安定したログ管理ができるようになります。
