機能紹介
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, POSTpath
リクエストパス
例: /api/usersquery_raw
生のクエリ文字列
例: id=10&tag=a&tag=bquery_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 表示カラム
わかりやすいエラー通知
エラーは「原因 + 次の対処」を日本語メッセージでトースト表示
完全オフライン動作
インターネット接続不要。ログデータが外部に送信されることはありません