ログ解析
生のログ(JSON、logfmt、Web アクセス、syslog、プレーンテキスト)を貼り付けると、パターンを書かずにタイムスタンプ、レベル、例外、主要フィールドを取り出します。
時間範囲
2026-10-20T13:55:36.123Z INFO [gateway] リクエストを受信 path=/api/orders user_id=4821
{"@timestamp":"2026-10-20T13:55:37.004Z","level":"error","service":"payment","message":"課金に失敗","order_id":"A-1042","user_id":4821}
127.0.0.1 - alice [20/Oct/2026:13:55:38 +0000] "POST /api/orders HTTP/1.1" 502 187 "-" "curl/8.5.0"
2026-10-20 13:55:40,512 ERROR [order-service] 注文の送信中に未処理の例外
java.lang.IllegalStateException: ゲートウェイがタイムアウトしました
at com.acme.Order.submit(Order.java:42)
Caused by: java.net.SocketTimeoutException: 読み取りがタイムアウトしました
at com.acme.Gateway.call(Gateway.java:77)
2026-10-20T13:55:41.900Z WARN [gateway] 再試行を予定 attempt=2 order_id=A-1042使い方
- ログの抜粋を貼り付けるか、ローカルの .log / .txt ファイルを開きます。解析はすぐに始まり(実行ボタンはありません)、各行を JSON、logfmt、Web アクセス、syslog、タイムスタンプやレベルで始まるテキストの順に判定します。
- まず要約を見てください。時間範囲、レベルの件数、例外、判定した形式、よく現れるフィールドのキーが表示されます。要約は常にすべてのイベントが対象です。
- レベルのチップをクリックするか検索欄に入力して一覧を絞り込みます。両者は組み合わせられます。行をクリックすると、メッセージ全体、すべてのフィールド、例外のスタック、元の行が展開され、絞り込んだイベントを JSON としてコピーまたはダウンロードできます。
例
生ログ
2026-10-20T13:55:36.123Z INFO [gateway] リクエストを受信 path=/api/orders user_id=4821
{"@timestamp":"2026-10-20T13:55:37.004Z","level":"error","service":"payment","message":"課金に失敗","order_id":"A-1042","user_id":4821}
127.0.0.1 - alice [20/Oct/2026:13:55:38 +0000] "POST /api/orders HTTP/1.1" 502 187 "-" "curl/8.5.0"
2026-10-20 13:55:40,512 ERROR [order-service] 未処理の例外
java.lang.IllegalStateException: ゲートウェイがタイムアウトしました
at com.acme.Order.submit(Order.java:42)解析結果の要約
イベント: 4 · 行数: 6 時間範囲: 2026-10-20T13:55:36.123Z → 2026-10-20T13:55:40.512(タイムゾーン混在) レベル: 情報 1 · エラー 3 例外: 1 形式: JSON 1 · Web 1 · テキスト 2 フィールド: path 2 · user_id 2 · bytes 1 · client 1 · method 1 · order_id 1 · protocol 1 · status 1
JSON の行は 1 つのイベントです。Java のクラス名の行とそのスタックは、その上の ERROR イベントの継続行です。タイムゾーンのないテキスト行は文字どおりの時刻として比較するため、時間範囲はタイムゾーン混在と表示されます。HTTP 502 はエラーとして数え、ステータスコードは元のレベルとして表示されます。
ルール・制限・既知の問題
- 判定は行単位で順序があります。JSON(1 行 1 オブジェクト)、logfmt(key=value が 2 組以上)、Apache / Nginx の common または combined アクセスログ、syslog RFC 5424 / 3164、次にタイムスタンプかレベルで始まるテキストです。それ以外はプレーンなイベントとして残し、行が捨てられることはありません。
- 正規化するのは曖昧さのないタイムスタンプだけです。ISO 8601、年が先頭の日付、Apache アクセスログの時刻、Unix 秒またはミリ秒です。03/04/2026、日付だけの値、年を含まない syslog は元のテキストを保ち、正規化した時刻を持ちません。
- 秒の小数部はミリ秒に切り捨て、丸めません。オフセットは保持し、オフセットのない時刻は文字どおりの時刻として比較し、要約にタイムゾーンなしまたは混在と表示します。
- レベルは固定の語彙(英語に加えて日本語とアラビア語の語)、pino / bunyan の数値、syslog の PRI / severity、HTTP ステータス(5xx はエラー、4xx は警告、それ以外は情報)から判定します。レベルを認識できない行は情報ではなく不明になります。
- インデントされた行、スタックフレーム、Traceback、Exception in thread、Caused by の行は直前のイベントに付きます。空行でスタックが終わります。これはヒューリスティックであり、対応していない複数行形式ではレコード間に空行が必要になることがあります。
- 例外は Exception、Error、Throwable で終わるクラス名から認識します。最も深い Caused by が優先されます。フレームは解析せず、それ以上の根本原因の順位付けも行わず、AI サービスを呼ぶこともありません。
- 一覧に描画するのは一致したイベントのうち最大 200 件です。件数、要約、コピー、ダウンロードは常にすべての一致が対象で、切り捨てが起きたときは一覧にその旨が表示されます。
- 入力の上限は 5,000,000 文字です。50 万文字を超えても解析は動作しますが、待ち時間が長くなります。1 行が 20 万文字を超える場合はプレーンテキストとして保持します。
- JSON の配列や整形された複数行の JSON には対応していません。1 行 1 オブジェクトのみです。不正な JSON、コメント、末尾のカンマは修復せず、プレーンテキストとして扱います。
- 何もアップロードせず、保存も URL への埋め込みもしません。ファイルはブラウザの File API でローカルに読み込み、コピーとダウンロードはボタンを押したときだけ実行されます。
関連ツール
ログを構造化したあとによく使われるツールです。