機能紹介

Log Viewportの主要機能をご紹介します

ログ取り込み

Apache / nginx のアクセスログを効率的に取り込み

複数ファイルの一括取り込み

ファイル選択ダイアログまたはドラッグ&ドロップで複数ファイルをまとめて取り込み。存在しない・空のファイルはスキップして残りを継続します。

ストリーミング処理

ファイルを一括読み込みせず逐次処理。パースとSQLite書き込みを別スレッドで並行実行し、数百万行規模のログも高速に取り込みます。

進捗表示とキャンセル

取り込み進捗を約100ms間隔で表示。追加・重複・エラー件数を随時確認でき、途中キャンセルも可能(取り込み済み分は保持)。

パーサー自動判定

ファイルの先頭行をサンプリングしてApache / nginxを推定し、パース成功率が高いフォーマットを既定選択。手動での変更も可能です。

フォーマット履歴の永続化

フォーマット定義は永続DBに保存され、再起動・全データクリア後も履歴として残ります。履歴からの選択・編集も簡単。不正な書式は保存前に検出します。

堅牢な読み込み

1行あたり1MBの読み込み上限を設け、バイナリファイルの誤指定などでもメモリを圧迫しません。時刻をパースできない行はエラー行として除外します。

対応ログフォーマット

Apache / nginx の標準Combined形式に対応。フォーマット定義の履歴管理・編集も可能

Apache Combined

%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"

Apache標準のCombined形式に対応

nginx Combined

$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"

nginx標準のCombined形式に対応

※ Apacheの%変数 / nginxの$変数による任意書式からの動的パーサー生成は、今後のバージョンで対応予定です

URL分解・正規化

リクエスト行を構造化して検索可能な形式で保存

method

HTTPメソッド

例: GET, POST

path

リクエストパス

例: /api/users

query_raw

生のクエリ文字列

例: id=10&tag=a&tag=b

query_params

正規化した key-value

例: (id,10), (tag,a), (tag,b)

※ クエリパラメータは %xx デコード・+のスペース変換のうえ保存。同名キーは複数行として保持します

ログ表示

仮想スクロールで数百万行もシームレスに閲覧

仮想スクロール

自社製OSSグリッド @lembryo/voxsheet を採用。表示中の行のみ描画し、ページネーションなしで全件をシームレスに閲覧

ステータス別カラーリング

HTTPステータスコードに応じて行を色分け(2xx / 3xx / 4xx / 5xx)

実在カラムのみ表示

取り込んだログに実際に値があるカラムだけを表示。不要な空カラムが並ばない

列幅リサイズ

ヘッダー境界のドラッグで列幅を調整。リサイズハンドルのダブルクリックで自動フィット

TSVコピー

複数範囲選択とCtrl+CによるTSVコピーに対応。表計算ソフトへの貼り付けも簡単

右クリックメニュー

行をコピー(TSV)/ セル値をコピー / この値で絞り込む、をワンクリックで実行

絞り込み・検索

列フィルタ・複数列ソート・横断検索で目的のログへ素早く到達

列フィルタ

各列ヘッダのフィルタボタンから条件(等しい / 等しくない / 含む / より大きい / より小さい)をAND結合で指定

比較型の自動判定

列の型(テキスト / 数値 / 日付)から比較方法を自動判定。手動選択も可能

複数列ソート

クリックで昇順 → 降順 → なしを循環。Shift+クリックで複数列の階層ソート

横断検索(Ctrl+F)

全列を対象にしたキーワード検索。ヒット位置 n / m 表示と▲▼でのナビゲーション付き

この値で絞り込む

セルの右クリックメニューからワンクリックで該当列のフィルタを適用

表示カラム選択

表示するカラムをダイアログで切り替え(Ctrl+Shift+C)

重複排除(Dedup)

同一ログの重複を自動的に排除

blake3によるfingerprint

正規化したログ行からblake3ハッシュ(先頭16バイト = 32文字hex)のfingerprintを生成。 正規化後のログ行全体を含めることで、別の行を誤って重複と判定することを防ぎます。 時刻をパースできない行はエラー行として除外し、誤った指紋を作りません。

DB制約で強制

UNIQUE(source_id, fingerprint) 制約と INSERT OR IGNORE により、データベース側で重複を強制的に排除。同じファイルを再取り込みしても安全です。

エクスポート

分析結果をCSV / SQLiteで出力

CSVエクスポート

UTF-8(BOM付き)でExcelでもそのまま開けるCSVを出力。全データまたは現在の表示条件を選択可能。ストリーミング書き出しで数百万行でもメモリ使用量は一定です。

SQLiteエクスポート

.sqliteファイル、または schema + data の .sql ダンプとして出力。お好みのSQLiteツールで自由にSQL分析ができます。進捗表示・キャンセルにも対応。

DBモード切替

用途に合わせてインメモリ / ファイルベースを選択

インメモリ(既定)

高速動作を優先したモード。データはアプリ終了時に破棄されます

ファイルベース

指定した.sqliteファイルに保存(WALモード)。次回起動時に自動復元されます

いつでも切り替え可能

ステータスバーから切り替え。データはSQLiteのbackup APIで安全に移行されます

使いやすさへのこだわり

毎日使うツールだから、細部まで快適に

ダークモード

既定ではOSテーマに追従。手動で切り替えると設定が保存され、次回起動時も維持

キーボードショートカット

Ctrl+O 取り込み / Ctrl+F 検索 / Ctrl+E エクスポート / Ctrl+Shift+C 表示カラム

わかりやすいエラー通知

エラーは「原因 + 次の対処」を日本語メッセージでトースト表示

完全オフライン動作

インターネット接続不要。ログデータが外部に送信されることはありません

Log Viewportを使ってみる