ログの容量の削減
 2025/10/31

ログがでかくて辛い
ログファイルに保存する場合だけでなく最終的にクラウドストレージに保存する場合にも、ログがでかいと辛くなる。
例としてAPIの通信の記録をログに出力している。複数のシステム連携のためのAPIで、ファイルをやりとりする必要があって、その場合にファイルのコンテンツをBase64符号化した文字列をJSONの中に詰めるというAPIが少なからず存在しています。この仕様自体が最適解ではないことは理解しつつも、連携先システムが要求していれば従うしか選択肢が無い。このAPIの通信内容をログに出力すると、当然ログの容量が激増する。
数年間運用しているけど、ファイルのコンテンツをログから復元する必要があったことが無いので、ここはログ容量を削減できるポイントなのではないかと考えました。
php-snip-base64-like
そこで、文字列やオブジェクトからBase64的な文字列を [base64 payload ~42816 bytes | preview: JVBERi0xLjQKJc... ] のような形式で省略するライブラリを作りました。当然、不可逆な省略なので、ファイルコンテンツ自体の情報は失われますが、相当のログサイズの削減が見込めます。
作った後に、調べてみましたが同様のライブラリは見付かりませんでした。Packagistにもアップロードしたので、composer を使って以下でインストール可能です。
composer require smeghead/php-snip-base64-likeかなりニッチな目的のライブラリですが、試してみてください。フィードバックお待ちしてます。