2009-06-09 11 views
0

特定のイベントに基づいてシステムログデータをログファイルに書き込む必要があります(通常は一度に100文字以下)。しかし、このログファイルのサイズは小さく(4KB程度)、ファイルサイズが上限に達するとログをラップする必要があります。ラップアラウンドしながら、最新の情報を保存し、後でそれをファイルに書き込まれた順に表示する必要があります。これを行う最善の方法は何ですか?私はこれを行うためにファイルのコピーを作成しないようにしたい。制限付きサイズのテキストファイルにデータを書き込む

答えて

7

制限ファイルに書き込むには:あなたの変更の要件を満たすために

call ftell to find out where you are in the file 
call fwrite to write as much as you can, with respect to restricted size 
if you couldn't write the whole message 
    call fseek to return to the start of the file 
    call fwrite to write the remainder of the message 

、あなたはレコードベースのファイルを使用する必要があります。最大のメッセージよりも少し大きいサイズを選択し、各メッセージにタイムスタンプを付けます。私が説明したアルゴリズムはまだ動作しますが、メッセージ全体を書き込めない場合は最初に戻っています。また、ファイルを読み込んで内容を時系列に表示するための小さなアプリケーションを作成する必要があります。

また、log4cのような既存のログライブラリを使用して調査してください。

+0

私は、ftellの戻り値がファイルの先頭からの正確なバイト数ではないかもしれないという印象を受けました。 –

+0

ファイルをバイナリモードで開くと表示されます。 –

+0

@ Neeil:最近のオペレーティングシステムでは、ファイルを開くときに "b"フラグを無視してバイナリモードで開くと聞いたことがありますが、ここではこの主張の妥当性を確認しようとしています。それが本当であるかどうか知っていますか? – dreamlax