ログ・トレース
まだ、コンピュータが低速だった80年代でも、「ログ」の作りこみは、とても重要だった。
短期記憶ログと長期記憶ログがあり、短期記憶ログのネットワークへの実装は、イベント発生のタイミングで、相手から受信したデータの概要と時刻を記録する。メモリ上にサイクリックに記録するため、せいぜい256レコードである。当時のコンピュータはカーネルタスクで例外が発生すると、システムダウンするので、確実に状況が記録できる。
たとえ、相手がどんな狂った電文を送信しても、自分が落ちるわけにはいかないが、想定外の自体は時々発生する。その想定外のために記録するわけだ。
もう少し長い時間のログを取りたい場合は、メモリ上の記録が1回転したタイミングでファイルに書き出したりすることもある。ただし、書き出している時間の処理を止めるのも申し訳ないので、2つのメモリ域を交互に切り替えて、処理するようにつくることもある。
ただし、こういった実装はトラブル調査の隠しオプションにして、通常の動作ではCPUのコストを下げるために、使わないのがよい。
昔のネットワークは、1400bpsとか極端に遅かったから、トレースをとっても2バッファ処理さえ実装しておけば、十分に使い物になった。
今では、あまり実機上でデータをとらず、ネットワーク機器で情報を集めたりすることも多いような気がする。もちろん不正アクセスなど、悪意をもったパケットもあるので、そういったものは、ネットワーク機器内で処理するほうが都合がよい。
最近は、ネットワーク機器もハックされるので、どこまでいっても完全な安全を保障できないのが悩みである。
わたしが、ログのつくり込みをしたのは、基本的に自己防衛である。通信がうまくいかなかった時に、その時点の挙動をどう説明できるか?
その一点のために、効率的なログを作る必要があったのだ。