ログとプライバシー(lcpd-grpcd / go-lcpd)
このプロジェクトではログを センシティブ と扱います。ログは「何が起きたか(quote → pay → result)」を追えるようにしつつ、ユーザーの生データ(プロンプト等)を永続化しないためのものです。
絶対にログに残してはいけないもの(MUST NOT)
- 生のリクエスト JSON(
openai_chat_completions_v1.request_json/ wire のinputstream bytes) - 生のモデル出力(result stream bytes / gRPC
Result.result) - 秘密情報(API key / macaroon / access token など)
- BOLT11 の
payment_request(invoice 文字列) - Lightning カスタムメッセージの生 payload や、gRPC のリクエスト/レスポンス全体ダンプ
ログに残してよい情報(例)
ログは メタデータ に寄せます:- 相関:
job_id,peer_id/peer_pub_key - タスク情報:
task_kind,model,input_bytes - 見積もり/支払い:
price_msat,quote_expiry_unix - 時間:
quote_ms,pay_ms,wait_ms,execute_ms,total_ms - 出力メタデータ:
output_bytes,content_type,usage_*(可能な場合の token unit)
ログレベル
LCPD_LOG_LEVEL で出力を制御します(debug / info / warn / error)。
error: サービスとして致命的・継続不能な失敗。warn: ジョブ単位の失敗や異常(ただしプロンプト/出力はログに残さない)。info: 計測と相関ができるように、ライフサイクルの要点を記録(quote 発行/受領、result 受領、job 完了など)。debug: 診断向けの追加情報(drop/resend/replay など)。それでも秘密は残さない。
運用上の注意
- 生データを残さなくても、ログには メタデータ(peer id / job id / 価格 / 時間など)が残ります。保存先・保持期間はセキュリティ上の判断です。
- ログをディスクに保存する場合は、権限の制限とローテーションを推奨します。 バックグラウンド実行とログ も参照してください。