ログ出力処理で気を付けること

4月末となりましたが、そろそろ花粉も落ち着いてきたでしょうか。
最近は暑くなったり寒くなったり気温が安定しませんね。
気を付けないと、体調を崩してしまいそうです。


さて表題の件ですが、ログ出力にも色々あるかと思います。
Windowsアプリケーションとかだと、以下のような形式で出力していき、
1日毎に別ファイルで残すようなイメージでしょうか。

ファイル名:20230425.log
出力内容:
2023-04-25 10:10:23 [INFO] SocketOpen!
;
2023-04-25 10:54:32 [INFO] SocketClose!
;

基本的に何ということは無い処理ですが、先日、状況によっては気を付けることが
いくつかあるなと感じたため、それについて書いてみようと思います。

・出力先の容量問題
PCの大容量HDに保存する場合は、あまり気にする必要は無いですが、
低容量のUSBメモリに出力するとか、マイコンの内部に残す場合は気にする必要があります。

対処法としては、一定期間が経過した古いログから消去していくのが良いでしょうか。

・書き込み回数問題
USBメモリに直接出力する場合に問題になってくる要素です。
安いメモリだと、500回~1000回程度の書き込みで寿命を迎えるものもあるようですし、
業務用でもおよそ10万回とのこと。1日に1000回書き込むような作りだと、約100日しか持ちません。

対処法としては、まず出来れば直接USBに出力しないようにした方が良いでしょう。
どうしても直接出力しないといけない場合、なるべく書き込み回数を減らすことを検討、ですかね。
具体的には、ファイルのOpen、Closeを1行書き込む毎に行うのではなく、
情報が溜まってからOpenし、まとめて書き込んでCloseするようにするとか。
途中でアプリが落ちた場合、書き込み前の情報がごっそり無くなってしまう問題が出てきますけどね。


こんなところでしょうか。問題発生時に、原因を調査するためのログ出力処理なのに、
その処理で問題が発生したら本末転倒なので注意したいですね。

以上