ログを蓄積するメリット | オリジナル、AI翻訳

Home 2025.07

ログを蓄積することのメリット

以前、銀行の契約社員として働いていた頃、マイクロサービスを提供するのにマルチクラウドのアプリケーションプラットフォームを使っていました。その時、私は会社で働く中でログを蓄積し始めました。

数年経った今でも、それは私の仕事やソフトウェアエンジニアリングをする上で最高の助けになると考えています。時間が経つにつれて、私のログディレクトリには何百ものログファイルが溜まっています。

特定のサブディレクトリや正式なログファイル名はありません。時には、JIRAのタスク名をログファイル名のプレフィックスに使ったり、その機能名を使ったりするだけです。そして、サフィックスに番号を追加します。例えば mutual-fund-1.log, mutual-fund-2.log のような形です。これは、ミューチュアルファンドのマイクロサービスを実行した際にそのログがあるという意味です。

時々、複数の地域にサービスを提供するプロジェクトに取り組む際には、国名をサフィックスに追加します。例えば mutual-fund-cn-1.log, mutual-fund-sg-1.log のようにです。ログのファイル名は、どこかカジュアルです。当時は、エラーのスタックや周辺の関数呼び出しに集中する必要があったからです。

プログラムのログが重要であることは誰もが知っています。しかし、私はコンソールで見るだけでログを流すのではなく、ログを蓄積することの重要性を強調したいです。プロジェクトが進行するにつれて、より多くの利便性を知るでしょう。以前のログを見つける時間が増えます。以前に同様のデータベースストアドプロシージャの呼び出しがあったかどうかを知る必要があるかもしれません。同じエラーが以前に発生したかどうかを知る必要があるかもしれません。前回この問題をどのように修正したかを思い出す必要があるかもしれません。

大規模なプロジェクトや数十のマイクロサービスには、膨大な詳細が存在します。そして、エラー、例外、または問題は繰り返し発生します。ログは、プログラムの稼働中のドキュメントのようなものです。そして、それらは人間の入力なしにプログラムによって自動的に生成されます。開発者にとって、これらのログは読み取り可能です。したがって、新しいタスクを開始したり、新しいバグを修正したりする際には、手元に何百ものログがあり、この新しいバグを修正することができます。あなたは一人ではありません。

なぜログを蓄積するのか?それは、物事や知識は簡単に忘れ去られるからです。

紙が発明された時、人類の文明は進歩しました。そして、コンピュータが発明された時、人類の文明は別のレベルに達しました。紙にメモを取ることは、コンピュータにログを蓄積することと似ています。

人間だけでなく、AIチャットボットやLLMツールにとっても、これらのログはますます重要になっています。2022年に設立されたGreptimeDBは、オブザーバビリティデータ(メトリクス、ログ、トレース)の統合的な収集と分析のためのデータベースですが、これは偶然ではありません。

なぜ以前はそうしなかったのでしょうか?大手銀行の契約社員として働いた後、より多くの協業と大規模なプロジェクトに取り組む必要がありました。それ以前は、スタートアップや私のスタートアップ期間のほとんどは、単独で作業していました。以前LeanCloudで働いていた時、私はLeanChatというIMアプリに半分くらいの時間を費やしていました。

そして、よりフォーマルな企業の世界に入ると、プロジェクトの開発は私の個人的なプロジェクトやスタートアップのプロジェクトとは異なりました。SIT、UATのテスト環境があり、本番環境はしばしば特定の小さなチームのメンバーにのみ開かれていました。そこからログを取得し、問題を修正することは時間がかかり、いくらか退屈になりました。プロジェクトの実行には時間がかかり、Jenkinsパイプラインはしばしば30分もかかりました。

だから、私は蝶のようにプログラムを実行したりテストしたりすることはできません。自分のPCでコマンドを打つだけでデプロイしたり、コードをサーバにアップロードして実行したりすることはできません。

これにより、タスクを処理するためにより多くのコンテキストを持つためにログを蓄積するようになりました。私たちは最初の一発で問題を解決することが望ましいです。数回の試行で修正を検証することが望ましいです。クラウドや会社のサーバーで実行されているプログラムのログを簡単に入手することはできないため、コピーしてローカルのラップトップに保存し、分析を行うのが良いでしょう。

そして今、私の個人的なプロジェクトでもログを蓄積するようになりました。それは習慣になっています。大手企業で数年間働いた後、私はなぜかプロジェクトをより大きく、より長くするための忍耐力や戦略を身につけました。だから時間が経つにつれて、これらのログが必要になることを知っています。

誰かが「あなたはただエレガントなコードと機能するプロジェクトを持っているだけでいい。ログやエラーのスタックトレースを蓄積する必要はない」と言うかもしれません。それは構いません。バグや新機能がある時、プログラムを実行して現在のログを取得できます。開発プロセスのログは必要ありません。それらは科学実験の詳細な記録のようなものです。一見すると問題ないように思えます。しかし長期的には、もしある日あなたが再びそれに取り組みたいと思ったり、共有したいと思ったり、他の人に引き継いでもらいたいと思ったりするなら、それは良くないかもしれません。

ここには良い機会があるかもしれないと思います。企業では、なぜすべての開発者が蓄積したログを共有することを奨励しないのでしょうか?オープンソースのプロジェクトでもそうすべきです。他人のログに魅力を感じないのは、私たちがそれらを知らないからです。それらのログを保存するとき、私たちはコンテキストを失います。そしてその中には、無関係な、または些細なメッセージがたくさんあるように見えます。

しかし、ログを蓄積するための努力は些細なものです。エラーログなど、ログを目にするたびにコピー&ペーストするだけです。では、自動化された方法で行うのはどうでしょうか?Spring Bootプロジェクトのように、プロジェクトを実行するたびにログをディレクトリに記録するのは良いアイデアです。

世界はますますデジタル化されているので、デジタルプログラムのログを溜めることは、物理的な世界で本を溜めることと同じです。


Back Donate