evlog について
evlogを使う開発者向けに、ログ設計、実装、検証の手順をまとめたスキルです。ワイドイベント、構造化エラー、パイプライン、フレームワーク連携、テレメトリーをテーマ別に案内します。
主な機能
- 01バージョンとログ連携の確認
- 02ワイドイベントと構造化エラーの設計
- 03サンプリング、監査、パイプラインの設定
- 04フレームワーク連携とプラグインの案内
- 05カバレッジ確認と検証
活用シーン
- 01分散したログをワイドイベントに再構成
- 02本番環境のサンプリングと再試行を設定
- 03フレームワークへevlogを導入してカバレッジを確認
- 04テレメトリー、プラグイン、クライアントログの調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill evlogインストール後、Claude Code で/evlogを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/cli-advanced.mdextend.mdframeworks-adapters.mdsetup-core.mdsource-map.mdwide-events-errors.md詳細
evlog
evlog に関わる作業(ワイドイベント、構造化エラー、ドレイン、サンプリング、監査証跡、AI SDK / eve テレメトリー、CLI プロダクトテレメトリー、クライアントロギング、プラグイン、@evlog/cli map のカバレッジスコアリングなど)では、このスキルを使用してください。
スナップショット:[email protected]、@evlog/[email protected]、@evlog/[email protected](2026-10-01 に確認済み。これより新しいリリースはありません)。バージョンが異なる場合は、source-map.md を参照して最新情報を取得してください。
ワークフロー
- コードを変更する前に、ローカルのロギング環境を確認します。
- 使用中の
evlog、任意の@evlog/cli/@evlog/telemetry/@evlog/nuxthub、フレームワークのピア依存関係、ドレイン先のパッケージバージョン。 - 統合経路:Nuxt/Nitro モジュール、Next の
createEvlog/withEvlog、TanStack Start のevlog/nitro/v3、Hono/Express/Fastify/Elysia ミドルウェア、Workers、Astro/Lambda ガイド、単独のinitLogger。 - パターン:散在する
console/pinoの行とlog.setワイドイベントのどちらを使っているか、createError({ why, fix })、監査、AI ラッパー、eve フック、クライアント取り込み、プラグイン。
- 使用中の
- バージョンや API が不明な場合は、ドキュメントを更新します。source-map.md から始めてください。
- インストール、3 つのロギングモード、
initLogger、コア API については、setup-core.md を参照してください。 - ワイドイベントの設計、封印/
fork、構造化エラー、カタログ、編集については、wide-events-errors.md を参照してください。 - フレームワークとの接続とアダプターの選択については、frameworks-adapters.md を参照してください。
- パイプライン、サンプリング、監査、AI、クライアントログ、
evlog map/ CI については、cli-advanced.md を参照してください。 - プラグイン、ストリーム、診断、ツールキット、
@evlog/telemetry、evlog/eveについては、extend.md を参照してください。
実装時の判断
- 同じリクエスト/ジョブ/ターン内で多数の info 行を出すのではなく、作業単位ごとに 1 つのワイドイベント(
log.setの後に自動emit、または手動emit)を優先してください。 - コンテキストは、意味のあるキーを使ってネストしたオブジェクト(
user、cart、payment)にまとめます。userId/cartIdのようなフラットな値の羅列や、汎用的なdataの入れ物は避けてください。 - 適切なモードを使います。単発処理には
log.*、ライフサイクルを管理する場合はcreateLogger/createRequestLogger、ミドルウェアが生成と送信を管理する場合はフレームワークのuseLogger/req.log/c.get('log')を使います。 - タグ付きの
log.info('tag', 'message')は、pretty モードではコンソールにのみ出力されます。オブジェクト形式は常にドレインに送信されます。 - 単独の
Errorではなく、createError({ message, status, why, fix, link?, code?, internal? })をスローしてください。クライアント側ではparseErrorで解析します。 - emit 後(またはサンプリングによる破棄後)は、ロガーが 封印 され、レスポンス後の
setは無視されます。意図的なバックグラウンドの子イベントには、利用可能な場合はlog.forkを使います。 - ライブラリや共有パッケージでは、
createLoggerを使うかロガーを受け取るようにします。ホスト側でinitLoggerを呼び出してドレインを強制しては いけません。 - 本番環境では、アダプターを
createDrainPipeline(バッチ処理 + 再試行)でラップし、ヘッドサンプリングとテールサンプリングを有効にします。エラーと金銭/認証関連の経路は保持してください。 - Nuxt/Nitro/Next/TanStack Start/Hono では、大規模なロギングのリファクタリングを行う前に
bunx @evlog/cli mapを実行してください。FIX FIRST を最初に修正します。CI では CLI のバージョンを固定してください。
検証
リポジトリに既存のチェックがあれば、それを優先してください。重要な evlog の変更では、関連する項目を実施してください。
- ローカルでルート/ジョブを実行し、期待するネストフィールドを含むワイドイベントが 1 つ 出力されることを確認します(開発時は pretty 表示)。
createErrorの経路を強制的に通し、ログ内のwhy/fixと、クライアント側のparseErrorを確認します。- エントリーポイントのカバレッジやセットアップを変更する場合は、
bunx @evlog/cli map/doctorを実行します。 - パイプラインの変更時はドレインのスモークテスト(Axiom/Sentry/Loki/fs NDJSON)を行い、シャットダウン時にフラッシュします。
- サンプリング設定を確認します。本番相当の設定でもエラーと
keepルールが保持されることを確認します。 RequestLogger、型付きフィールド、カタログのインポートを型チェックします。
コメント
Markdown 対応