テスト実行の追跡のため、BreakdownLogger をテストファイルに追加する(本番コード禁止)。
Import と生成
import { BreakdownLogger } from "@tettuan/breakdownlogger";
import { LogLevel, LogLength, type LogEntry } from "@tettuan/breakdownlogger";
const logger = new BreakdownLogger("loader"); // KEY=テスト対象モジュール
API
| メソッド |
表示条件 |
debug(msg, data?) |
LOG_LEVEL=debug |
info(msg, data?) |
デフォルト以上 |
warn(msg, data?) |
LOG_LEVEL=warn 以上 |
error(msg, data?) |
常時(stderr) |
型
| 型 |
値 |
LogLevel |
DEBUG=0, INFO=1, WARN=2, ERROR=3 |
LogLength |
DEFAULT=80, SHORT=160, LONG=300, WHOLE=無制限 |
LogEntry |
{ timestamp, level, key, message, data? } |
LOG_KEY 命名規則
問題の層を特定するため、src/ モジュール境界に1対1で KEY を対応させる。
| KEY |
src/ モジュール |
デバッグ対象 |
config |
breakdown_config.ts |
Public API: 設定の生成・構造・アクセス |
manager |
config_manager.ts |
内部制御: 初期化・マージ戦略・リロード |
loader |
loaders/ |
ファイルI/O: 読み込み・パース・形式検出 |
validator |
validators/ |
検証: スキーマ・制約・拒否理由 |
error |
errors/, error_manager.ts |
エラー: 生成・i18n・伝播チェーン |
path |
utils/path_resolver.ts, utils/valid_path.ts |
パス: 解決・探索・存在確認 |
cache |
utils/config_cache.ts, utils/error_cache.ts |
キャッシュ: ヒット/ミス・TTL・無効化 |
setup |
テストのsetup/teardown |
テスト環境: フィクスチャ・一時ディレクトリ |
config は BreakdownConfig クラス、manager は ConfigManager に使い、公開APIか内部制御かを切り分ける。
実装パターン
関数呼び出し前に入力値、呼び出し後に期待値と実際の値をログし、失敗原因を特定する。
const logger = new BreakdownLogger("manager");
it("should merge user config over app defaults", () => {
logger.debug("merge inputs", { appConfig, userConfig });
const result = mergeConfigs(appConfig, userConfig);
logger.debug("merge result", { expected: "user_value", actual: result.key });
assertEquals(result.key, "user_value");
});
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: add-logger3description: Add BreakdownLogger to test code. Use when creating test files, adding debug logging to existing tests, or when user says 'ログ追加', 'logger追加', 'デバッグログ'. Use when this capability is needed.4---56テスト実行の追跡のため、BreakdownLogger をテストファイルに追加する(本番コード禁止)。78## Import と生成910```typescript11import { BreakdownLogger } from "@tettuan/breakdownlogger";12import { LogLevel, LogLength, type LogEntry } from "@tettuan/breakdownlogger";13const logger = new BreakdownLogger("loader"); // KEY=テスト対象モジュール14```1516## API1718| メソッド | 表示条件 |19|---------|---------|20| `debug(msg, data?)` | `LOG_LEVEL=debug` |21| `info(msg, data?)` | デフォルト以上 |22| `warn(msg, data?)` | `LOG_LEVEL=warn` 以上 |23| `error(msg, data?)` | 常時(stderr) |2425## 型2627| 型 | 値 |28|---|---|29| `LogLevel` | `DEBUG=0`, `INFO=1`, `WARN=2`, `ERROR=3` |30| `LogLength` | `DEFAULT`=80, `SHORT`=160, `LONG`=300, `WHOLE`=無制限 |31| `LogEntry` | `{ timestamp, level, key, message, data? }` |3233## LOG_KEY 命名規則3435問題の層を特定するため、src/ モジュール境界に1対1で KEY を対応させる。3637| KEY | src/ モジュール | デバッグ対象 |38|-----|---------------|------------|39| `config` | `breakdown_config.ts` | Public API: 設定の生成・構造・アクセス |40| `manager` | `config_manager.ts` | 内部制御: 初期化・マージ戦略・リロード |41| `loader` | `loaders/` | ファイルI/O: 読み込み・パース・形式検出 |42| `validator` | `validators/` | 検証: スキーマ・制約・拒否理由 |43| `error` | `errors/`, `error_manager.ts` | エラー: 生成・i18n・伝播チェーン |44| `path` | `utils/path_resolver.ts`, `utils/valid_path.ts` | パス: 解決・探索・存在確認 |45| `cache` | `utils/config_cache.ts`, `utils/error_cache.ts` | キャッシュ: ヒット/ミス・TTL・無効化 |46| `setup` | テストのsetup/teardown | テスト環境: フィクスチャ・一時ディレクトリ |4748`config` は BreakdownConfig クラス、`manager` は ConfigManager に使い、公開APIか内部制御かを切り分ける。4950## 実装パターン5152関数呼び出し前に入力値、呼び出し後に期待値と実際の値をログし、失敗原因を特定する。5354```typescript55const logger = new BreakdownLogger("manager");5657it("should merge user config over app defaults", () => {58 logger.debug("merge inputs", { appConfig, userConfig });59 const result = mergeConfigs(appConfig, userConfig);60 logger.debug("merge result", { expected: "user_value", actual: result.key });61 assertEquals(result.key, "user_value");62});63```6465---66> Converted and distributed by [TomeVault](https://tomevault.io/claim/tettuan) — claim your Tome and manage your conversions.67<!-- tomevault:4.0:skill_md:2026-04-13 -->