このプロジェクトは、既存の peeeechi/syslog-filter アプリケーションをベースに、より統一された設計と強化された機能を提供するために再構築されました。Syslogファイルを効率的にフィルタリング・抽出・分析できる、モジュール化されたWebアプリケーションです。
このプロジェクトの主な変更点:
- 元の
app.pyファイルは削除され、新しいsrc/app.pyがアプリケーションのエントリーポイントになりました。 - 全ての機能がモジュール化され、
src/ディレクトリに集約されています。 - 時系列図作成機能は、現時点では含まれていません。
- 柔軟なファイルアップロード:
.log,.txt,.zipファイルのアップロードに対応。 - 自動アーカイブ展開: アップロードされた
.zipファイルと、その中に含まれる.zst圧縮ログファイルを自動で展開します。 - スマートなログファイル選択: 展開されたアーカイブ内に
.logファイルが1つのみの場合は自動で読み込み、複数ある場合は選択リストを表示。 - 自動ページナビゲーション: ログデータの読み込み完了後、自動で「日時指定・抽出」ページへ遷移します。
- 日付範囲の指定: 開始日と終了日をそれぞれ指定し、複数日にまたがるログを抽出できます。
- 時刻範囲のより詳細な指定: 「時」と「分」を個別に設定でき、分は1分単位で指定可能です。
- 設定の保持: 一度指定した日時設定は、ページ移動後も自動的に保持され、再度ページにアクセスした際に自動的に復元されます。
- 絞り込み結果の視覚的な確認: 絞り込み後のログが多数ある場合、最初と最後の3行ずつを表示し、中略があることを明示します。
- 抽出結果のダウンロード: 抽出されたログを CSV または LOG 形式でダウンロードできます。
- フィルタスキップの柔軟性: 日時指定を実行しなくても、そのまま次の「ログ分析」ステップ(キーワードフィルタリング)に進めます。この場合、分析ページは全ログデータを対象とします。
- オリジナルの高度なフィルタリング機能を完全に再現。
- キーワード検索の対象拡張: ログメッセージだけでなく、タイムスタンプ (Timestamp)、Hostname、AppName、PID も検索キーワードの対象となります。
- 表示・出力列のカスタマイズ: 結果テーブルに表示する列や、ダウンロードするCSV/LOGファイルに含める列を、チェックボックスで個別にON/OFF選択できます。
- 日時による抽出: このページでは、「日時指定・抽出」ページで絞り込まれたデータを対象とします。設定された日時範囲がページ上で表示されます。
- 表示行数のカスタマイズ: 結果表示の最大行数をスライダーで調整できます。
- 結果のダウンロードの堅牢性: CSVダウンロード時のエスケープエラーを修正し、より確実にダウンロードできるようになりました。LOG形式のダウンロードも選択された列を反映します。
- 統一された設計:
src/ディレクトリにコードを集約し、モジュール化された構造で管理。 - 単一コマンドでの起動: プロジェクトのルートディレクトリから
streamlit run src/app.pyで実行。 - 堅牢なインポート:
src/app.pyがプロジェクトルートをPythonパスに自動で追加するため、安定したモジュールインポートが可能。 - グローバルUI: どのページにいても、サイドバーのボタンで「このアプリケーションについて」を表示したり、画面右上の「日時指定ページへ」ボタン(日時指定ページとデータ読み込みページ以外で表示)で直接日時指定ページへ移動したり、「トップページへ戻る」ボタンでデータ読み込みページに戻ったりできます。
- グローバル一時ファイルクリーンアップ:
temp_syslog_uploadディレクトリと関連データを、サイドバーのボタンから完全に削除できます。
- Git
- Python 3.8+
- pip (Pythonパッケージインストーラ)
-
リポジトリをクローンする (またはあなたのフォークをクローン):
git clone [https://github.com/peeeechi/syslog-filter.git](https://github.com/peeeechi/syslog-filter.git) cd syslog-filter(もしフォークしている場合は、
peeeechiをあなたのGitHubユーザー名に置き換えてください。) -
依存関係をインストールする:
pip install -r requirements.txt
syslog-filter ディレクトリにいる状態で、以下のコマンドを実行します。
streamlit run src/app.pysyslog-filter/
├── .gitignore # Git管理から除外するファイル/ディレクトリ
├── requirements.txt # Pythonの依存関係リスト
└── src/ # 主要なアプリケーションコードを格納するディレクトリ
├── __init__.py # src ディレクトリをPythonパッケージとして認識させるためのファイル
├── app.py # アプリケーションの新しいエントリーポイント (旧 main_app.py)
├── app_pages/ # 各機能を独立したモジュールとして管理するディレクトリ
│ ├── __init__.py
│ ├── upload_data_page.py # ステップ1: 全てのファイルアップロードとデータ処理を担当
│ ├── datetime_spec_page.py # ステップ2: 日時によるログの絞り込みと抽出を担当
│ ├── existing_filter_page.py # ステップ3: キーワードフィルタリング機能のページ
│ └── about_page.py # アプリケーション情報ページ
└── utils/ # 再利用可能なヘルパー関数群
├── __init__.py
├── file_handlers.py # ZIP/ZST展開やファイル処理ロジック
└── log_parser_utils.py # Syslogのパースユーティリティ