日志系统,如log4j或者glog等等有没有对于日志落到磁盘上的时间有没有什么保证?如何实现日志系统能在1min内将日志写到磁盘上。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
いいえ、パフォーマンスを向上させるには、メモリ バッファリングとディスク バッファリング テクノロジを使用する必要があります。
ハードドライブに費やす時間に関する要件がある場合は、自分で書き込む必要がある場合があります。 通常出力に使用する fprintf と同様に、パフォーマンス上の理由から、ランタイム ライブラリの関数はバッファリングされます (キャッシュは通常約 4K ですが、必ずしも必要ではありません)。 、実際にハードディスクに書き込むための書き込み呼び出しが 1 回あります 。 自分で実装する場合は、リアルタイム性を考慮して、システム コール インターフェイス write() を直接使用してログを記録します。 バッファ許容値が 1 分の場合、ログを書き込むときに fprintf を使用できますが、1 分ごとに fflush() を呼び出してログを強制的にハードディスクに保存します 。 PS: log4j にそのような強力なフラッシュ インターフェイスがある場合は、情報を確認できます。
いいえ、パフォーマンスを向上させるには、メモリ バッファリングとディスク バッファリング テクノロジを使用する必要があります。
ハードドライブに費やす時間に関する要件がある場合は、自分で書き込む必要がある場合があります。
通常出力に使用する fprintf と同様に、パフォーマンス上の理由から、ランタイム ライブラリの関数はバッファリングされます (キャッシュは通常約 4K ですが、必ずしも必要ではありません)。 、実際にハードディスクに書き込むための書き込み呼び出しが 1 回あります
。 自分で実装する場合は、リアルタイム性を考慮して、システム コール インターフェイス write() を直接使用してログを記録します。 バッファ許容値が 1 分の場合、ログを書き込むときに fprintf を使用できますが、1 分ごとに fflush() を呼び出してログを強制的にハードディスクに保存します
。 PS: log4j にそのような強力なフラッシュ インターフェイスがある場合は、情報を確認できます。