C++17 と CMake を使用して作成した、ログファイルの簡易フィルタリングツールです。
標準入力またはファイルからログを読み込み、指定したログレベル(INFO / WARN / ERROR)の行のみを抽出します。
小規模な CLI ツール開発のサンプルとして利用でき、
C++ の基本的な文字列処理・ファイル入出力・CMake 構成・GitHub Actions を含む
最小構成のプロジェクト例となっています。
- C++17
- CMake(アウトオブソースビルド)
- std::filesystem による実行ファイル名取得
- GitHub Actions(自動ビルド & 簡易テスト)
- .gitignore による CMake 生成物の除外(build/ 配下)
- ログレベルによる行フィルタリング
- 対応レベル:
INFO/WARN/ERROR
- 対応レベル:
- ファイル入力または標準入力に対応
- Usage 表示(
argv[0]から実行名を自動取得) - シンプルで読みやすい C++17 コード構成
std::getlineによる高速な行処理\nを使用した効率的な出力(std::endlは未使用)std::filesystem::pathによる実行ファイル名の抽出- エラー時には Usage を併記し、CLI ツールとして扱いやすい設計
- GitHub Actions による自動ビルドと簡易テストを実装
- CMake のアウトオブソースビルドを前提としており、
build/などの生成物は.gitignoreにより管理対象外としています
log-filter-sample/
├─ .gitignore # CMake 生成物(build/ 配下)を除外
├─ .github/
│ └─ workflows/
│ └─ build.yml # 自動ビルド用 GitHub Actions ファイル
├─ src/
│ └─ main.cpp # メイン処理
├─ CMakeLists.txt # CMake 設定
├─ LICENSE # ライセンスファイル
└─ README.md # プロジェクト説明
logfilter --level LEVEL [file]
INFOWARNERROR
logfilter --level ERROR app.log
[INFO] Starting system
[WARN] Low memory
[ERROR] Failed to load module
[INFO] Running task
logfilter --level ERROR app.log
[ERROR] Failed to load module
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
生成物は以下に出力されます:
build/logfilter
本リポジトリには以下を行う GitHub Actions を含みます:
- CMake による自動ビルド
- 標準入力を用いた簡易テスト
- main ブランチへの push / PR 時に実行
MIT License
ご相談やご依頼がありましたら、以下のメールアドレスまでご連絡ください。
丁寧に対応いたします。