日志系统,如log4j或者glog等等有没有对于日志落到磁盘上的时间有没有什么保证?如何实现日志系统能在1min内将日志写到磁盘上。
PHP中文网2017-04-17 14:34:54
ハードドライブに費やす時間に関する要件がある場合は、自分で書き込む必要がある場合があります。
通常出力に使用する fprintf と同様に、パフォーマンス上の理由から、ランタイム ライブラリの関数はバッファリングされます (キャッシュは通常約 4K ですが、必ずしも必要ではありません)。 、実際にハードディスクに書き込むための書き込み呼び出しが 1 回あります
。
自分で実装する場合は、リアルタイム性を考慮して、システム コール インターフェイス write() を直接使用してログを記録します。
バッファ許容値が 1 分の場合、ログを書き込むときに fprintf を使用できますが、1 分ごとに fflush() を呼び出してログを強制的にハードディスクに保存します
。
PS: log4j にそのような強力なフラッシュ インターフェイスがある場合は、情報を確認できます。