ログ機能
進捗表示機能とログレベルの設定方法
LightFile Batchは、設定に応じて詳細なログを出力したり、逆にログ出力を抑制したりすることができます。このドキュメントでは、ログ出力の設定方法と活用方法を説明します。
進捗ログ機能
LightFile Batchは、バッチ処理中に定期的に進捗状況をログ出力します。
特徴:
- デフォルトで30秒間隔で進捗を表示
- スキャンフェーズ、最適化フェーズ、完了時にそれぞれ異なる情報を表示
- 前回の実行実績を見積もりとして活用し、推定残り時間を表示
- 処理統計(最適化件数、スキップ件数、失敗件数、削減量)をリアルタイムで確認可能
見積もり機能: LightFile Batchは継続的にディレクトリを最適化する用途を想定しているため、前回のスキャン実績を今回の見積もりとして利用します。定常運転に入るとファイル数が急激に増減することは少ないため、この方法で精度の高い進捗表示が可能です。
進捗ログの例:
🛞 スキャン中: 250ファイル | ⏳ 経過: 3s
🔧 最適化中: 250 / 750ファイル (33.3%) | 最適化: 84件 | スキップ: 83件 | 失敗: 83件 | 削減量: 2.1 MB (-14.0%) | ⏳ 経過: 3s | 残り: 約6s
✅ 完了: 750ファイル処理 | 最適化: 252件 | スキップ: 249件 | 失敗: 249件 | 総削減量: 6.2 MB (-14.0%) | ⏳ 所要時間: 18s各メッセージの詳細なフォーマットについては、ログメッセージ一覧を参照してください。
進捗ログ間隔のカスタマイズ
--log-progress-interval オプションで進捗ログの出力間隔を変更できます。
# 10秒間隔で進捗ログを出力
lightfile-batch local /path/to/images --log-progress-interval 10s
# 1分間隔で進捗ログを出力
lightfile-batch local /path/to/images --log-progress-interval 1m
# 進捗ログを無効化
lightfile-batch local /path/to/images --log-progress-interval 0指定可能な単位:
ms: ミリ秒(例:500ms)s: 秒(例:30s)m: 分(例:1m)h: 時間(例:1h)
YAML設定ファイル:
log:
progressInterval: 30sデフォルト: 30s(30秒)
ログレベル
LightFile Batchは4段階のログレベルをサポートしています。各レベルは、問題の深刻度に応じて出力されるログが異なります。
ログレベルと問題の深刻度
LightFile Batchでは、問題の深刻度を以下の3段階で分類しています:
- Warn(警告): 想定外のことが起きたが、ファイルの処理は継続できる
- Error(エラー): 個別のファイルの処理を継続できない(バッチ処理自体は継続)
- Fatal(致命的エラー): バッチ処理全体がこれ以上進行できない
debug(デバッグ)
最も詳細なログを出力します。開発やトラブルシューティング時に使用します。
出力されるログ: Debug、Info、Warn、Error、Fatal すべて
lightfile-batch local /path/to/images --log-level debug出力例:
ライセンス検証: OK
バッチ処理を開始します
ワークフローの作成中...
🛞 スキャン中: 250ファイル | ⏳ 経過: 3s
画像形式を検出しました: JPEG
JPEG処理を開始します (品質: medium)
JPEG最適化を開始します
最適化完了
ファイルを最適化しました: image.jpg
...info(情報、デフォルト)
重要な情報ログを出力します。通常使用時に推奨されるレベルです。
出力されるログ: Info、Warn、Error、Fatal
lightfile-batch local /path/to/images --log-level info
# または省略(デフォルト)
lightfile-batch local /path/to/images出力例:
DryRunモード: 実際の処理は行いません
🛞 スキャン中: 250ファイル | ⏳ 経過: 3s
🔧 最適化中: 250 / 750ファイル (33.3%) | 最適化: 84件 | スキップ: 83件 | 失敗: 83件 | 削減量: 2.1 MB (-14.0%) | ⏳ 経過: 3s | 残り: 約6s
ファイルを最適化しました: image.jpg
スキップ: image2.jpg (ファイルは既に最適化されています)
Warning: ファイルの読み込み中に問題が発生しましたが、処理を継続します: image3.jpg
Error: ファイルの最適化に失敗しました: corrupted.jpg
✅ 完了: 750ファイル処理 | 最適化: 252件 | スキップ: 249件 | 失敗: 249件 | 総削減量: 6.2 MB (-14.0%) | ⏳ 所要時間: 18swarn(警告)
警告、エラー、致命的エラーのみを出力します。処理の継続に影響する問題のみを確認したい場合に使用します。
出力されるログ: Warn、Error、Fatal
lightfile-batch local /path/to/images --log-level warn出力例:
Warning: ファイルの読み込み中に問題が発生しましたが、処理を継続します: image3.jpg
Error: ファイルの最適化に失敗しました: corrupted.jpg
Error: 最適化されたファイルの書き出しに失敗しました: readonly.jpgerror(エラー)
エラーと致命的エラーのみを出力します。失敗したファイルと致命的な問題のみを記録したい場合に使用します。
出力されるログ: Error、Fatal
lightfile-batch local /path/to/images --log-level error出力例:
Error: ファイルの最適化に失敗しました: corrupted.jpg
Error: 最適化されたファイルの書き出しに失敗しました: readonly.jpg
Fatal: ライセンストークンが見つかりません。バッチ処理を中断します。詳細ログ(--verbose)
--verbose オプションを使用すると、内部処理(ファイルシステムアクセス、画像処理など)の詳細なログが出力されます。
通常のログレベル(--log-level)ではlightfile-batch自身のログのみが表示されますが、--verboseを追加することで、より低レベルの処理内容まで確認できます。
# --verboseのみ指定(ログレベルはデフォルトのinfo)
lightfile-batch local /path/to/images --verbose
# --log-level debug と --verbose を組み合わせる(最も詳細)
lightfile-batch local /path/to/images --log-level debug --verbose出力例:
ライセンス検証: OK
バッチ処理を開始します
[storemanager] Initializing file memory database
[storemanager] Loading existing records from /home/user/.lightfile-next/batch/my-project/file-memory
[filesystem] Scanning directory: /path/to/images
[filesystem] Found 250 files matching criteria
🛞 スキャン中: 250ファイル | ⏳ 経過: 3s
[optimizer] Processing file 1/250: image1.jpg
[jpeg] Decoding JPEG image
[jpeg] Image size: 1920x1080
画像形式を検出しました: JPEG
JPEG処理を開始します (品質: medium)
[jpeg] Encoding with quality: 75
[optimizer] Optimization completed for image1.jpg
ファイルを最適化しました: image1.jpg
...内部処理ログの例:
[storemanager]: ファイルメモリ(簡易データベース)の操作[filesystem]: ファイルシステムアクセス(スキャン、読み書き)[optimizer]: 最適化処理のフロー[jpeg]/[png]: 画像フォーマット固有の処理
用途:
- 処理の詳細な流れを確認したい場合
- トラブルシューティング時(どのサブモジュールで問題が起きているか特定)
- 処理がどこで止まっているかを確認したい場合
- パフォーマンスのボトルネックを調査する場合
静かな実行(--quiet)
--quiet オプションを使用すると、コンソールへの出力が抑制されます。
lightfile-batch local /path/to/images --quiet用途:
- バックグラウンドで実行する場合
- cron/タスクスケジューラで定期実行する場合
- ログファイルのみに記録したい場合
注意: エラーが発生した場合は、標準エラー出力に出力されます。
環境変数でログレベルを設定
環境変数 LOG_LEVEL でログレベルを設定できます。
export LOG_LEVEL=debug
lightfile-batch local /path/to/images優先順位: --log-level オプション > LOG_LEVEL 環境変数
詳細なログメッセージの一覧は、ログメッセージ一覧を参照してください。
DryRunモード
--dry-run オプションを使用すると、実際の処理を行わずに結果をプレビューできます。
lightfile-batch local /path/to/images --dry-run出力例:
DryRunモード: 実際の処理は行いません
🛞 スキャン中: 250ファイル | ⏳ 経過: 3s
🔧 最適化中: 250 / 250ファイル (100.0%) | 最適化: 84件 | スキップ: 83件 | 失敗: 83件 | 削減量: 2.1 MB (-14.0%) | ⏳ 経過: 5s | 残り: 約0s
ドライラン(プレビュー): ファイルの書き込みをスキップしました(各ファイルごと)
✅ 完了: 250ファイル処理 | 最適化: 84件 | スキップ: 83件 | 失敗: 83件 | 総削減量: 2.1 MB (-14.0%) | ⏳ 所要時間: 5sDryRunモードで確認できること:
- 処理対象ファイル数
- 推定削減量
- 処理にかかる時間の目安
- 設定が正しいか
ログ出力のカスタマイズ
コンソール出力のみ抑制
lightfile-batch local /path/to/images --quiet詳細ログを追加
lightfile-batch local /path/to/images --verboseログレベルとverboseの組み合わせ
# 最も詳細な出力
lightfile-batch local /path/to/images --log-level debug --verbose
# エラーのみ、詳細なし
lightfile-batch local /path/to/images --log-level errorYAML設定ファイルでのログ設定
YAML設定ファイルでログ関連の設定をまとめて指定できます。
log:
level: info
progressInterval: 30s指定可能なレベル:
debug: デバッグ情報を含む詳細なログinfo: 通常の情報ログ(デフォルト)warn: 警告とエラーのみerror: エラーのみ
実用例
例1: 詳細ログで実行し、進捗を10秒間隔で表示
lightfile-batch local /path/to/images \
--log-level debug \
--verbose \
--log-progress-interval 10s例2: 静かに実行し、エラーのみ記録
lightfile-batch local /path/to/images \
--quiet \
--log-level error \
2> errors.log例3: ドライランで処理内容を確認
lightfile-batch s3 \
--s3-bucket my-bucket \
--s3-region us-west-2 \
--s3-acl private \
--dry-run \
--verbose例4: 進捗ログなしで実行
長時間実行するバッチ処理で、最終結果のみ記録したい場合。
lightfile-batch local /path/to/images \
--log-progress-interval 0 \
> result.log 2>&1例5: YAML設定ファイルで実行
# batch-config.yaml
log:
level: info
progressInterval: 1m
local:
dir: /var/www/images
optimization:
quality: high
concurrency: 4lightfile-batch --config batch-config.yaml関連ページ
- ログメッセージ一覧 - すべてのログメッセージの詳細なリファレンス
- トラブルシューティング - 処理の問題 - ログに関する問題の解決方法