ログパーサー&秘匿化

本番ログファイルをドロップすると、フィルタ可能な表が得られます。Apache/Nginx、JSON Lines、syslog を自動認識し、機密値を秘匿化して、クリーンな CSV、JSON、テキストを出力します。ファイルがブラウザの外に出ることは決してありません。解析はローカルで行われます。それこそがこのページが存在する理由です。

このページがあなたのログにすること

ログファイルは表になって初めて役に立ちます。1列目に時刻、別の列にレベル、そして生テキストをスクロールせずに読めるメッセージ。このページは各行をそれらの列に解析し、レベルを数え、重要な行だけに絞り込めるようにします。エラーだけ、あるいは特定のホスト名、パス、ユーザーに触れたすべての行などです。表には一致した最初の1,000行が表示されます。カウントは読み込んだすべてを対象とするので、フィルタが隠したのが9行なのか9,000行なのかが常に分かります。

ファイルは1つの文字列として読み込むのではなく、1 MB のチャンクで読み込まれるため、数メガバイトの本番ログでも読み込み中にタブが固まることはありません。解析された最初の20,000行はフィルタと書き出しのために保持されます。それを超えても、ページはすべての行を数え続け、合計を正直に報告します。ファイルがそれより大きい場合は、書き出す前にフィルタするか、ファイルを分割して2回通してください。この流れのどこもネットワークには触れません。File API がバイトを読み、パーサーはページ内で動き、書き出しも同じローカルの行から組み立てられます。

秘匿化はパターンマッチであり、保証ではありません

秘匿化は、共有されたログで最も漏れやすい値を隠します。メールアドレス、IP アドレス、Bearer トークン、AWS アクセスキー ID、そして api_key、secret、password、token といったラベルの後に書かれた値です。デフォルトで有効で、表とすべての書き出し形式に適用されます。しかしこれはパターンマッチであり、パターンは取りこぼします。珍しい形式のトークン、行をまたいで分割されたシークレット、顧客を特定できる内部ホスト名などです。書き出しは「安全」ではなく「より安全」と考えてください。どこかへ送る前、特に組織の外へ送る前には、一度目を通してください。自分のデバッグのために生の値が必要な場合は、秘匿化をオフにしてください。トグルは表のすぐ上にあります。

その区別こそが、このページが存在する理由です。本番ログをチャットウィンドウやオンラインビューアに貼り付けると、その内容は永久に第三者の手に渡ります。ローカルで解析すれば、誰にも何も渡りません。ホスト型ビューアの便利さは、ログの内容と引き換えにする価値は決してありません。そして、決してリクエストを送らないブラウザタブこそが、それを確かめる最も簡単な方法です。

よくある質問

私のログファイルはブラウザの外に出ますか?

いいえ。ファイルは File API で読み込まれ、ローカルで解析されます。何もアップロードされず、サーバーへの呼び出しは一切ありません。それが要点です。本番ログにはアドレス、トークン、ユーザーデータが含まれており、チャットウィンドウに貼り付けたり、適当なビューアにアップロードしたりすべきではありません。

どのログ形式が認識されますか?

Apache/Nginx の combined アクセスログ、JSON Lines(1行に1つの JSON オブジェクト)、syslog 行、そして任意の行からレベルキーワードを走査する汎用フォールバックです。自動検出は combined、JSON、syslog、汎用の順に試します。自動検出が間違えた場合は、形式を明示的に選んでください。

秘匿化は実際に何を隠しますか?

メールアドレス、IPv4 および IPv6 アドレス、Bearer トークン、AWS アクセスキー ID、そして api_key/secret/password/token ラベルの後の値です。これはパターンマッチであり、保証ではありません。珍しい形式はすり抜けるため、書き出しをどこかへ送る前に確認してください。秘匿化はデフォルトで有効で、表と書き出しの両方に適用されます。

どのくらいの大きさのファイルを開けますか?

ファイルは 1 MB のチャンクで読み込まれるため、数メガバイトのログでもタブは固まりません。すべての行がカウントされ、解析された最初の20,000行がフィルタと書き出しのために保持され、表には一致した最初の1,000行が表示されます。より大きな作業では、先にフィルタしてから書き出してください。

エラーに見えるのに、レベルが「info」になっている行があるのはなぜですか?

アクセスログにはレベルフィールドがないため、レベルは HTTP ステータスから推測されます。5xx はエラー、4xx は警告、それ以外は情報です。JSON 行は、独自のレベルフィールドが存在すればそれを使います。行の分類が間違っているように見える場合は、その横にあるステータスコードやメッセージテキストが真実です。