私の C# winforms 4.0 アプリケーションは、スレッドセーフなストリームライターを使用して、内部のデバッグ ログ情報を処理しています。私のアプリが開くと、ファイルが削除され、再作成されます。アプリを閉じると、ファイルが保存されます。
私がしたいのは、置き換えではなく追加を行うようにアプリケーションを変更することです。これは簡単な修正です。
ただし、ここに私の質問があります:
ログ ファイルを最大で 10 メガバイト前後に維持したいと考えています。私の制約は単純です。ファイルを閉じるときに、ファイルが 10 メガバイトを超える場合は、最初の 10% を切り捨てます。
次のことを行う「より良い」方法はありますか:
- ファイルを閉じる
- ファイルが 10 MB を超えているかどうかを確認します
- その場合は、ファイルを開きます
- 全体をパースする
- 最初の 10% を選別する
- ファイルを書き戻す
- 近い
編集:まあ、私は自分自身をロールバックしました(以下に示されています)明白にLog4Netに移行するという提案は良いものですが、新しいライブラリを学び、すべてのログステートメント(数千)を移行するのにかかる時間はそうではありません.私が行おうとしていた小さな強化に有効な時間。
private static void PerformFileTrim(string filename)
{
var FileSize = Convert.ToDecimal((new System.IO.FileInfo(filename)).Length);
if (FileSize > 5000000)
{
var file = File.ReadAllLines(filename).ToList();
var AmountToCull = (int)(file.Count * 0.33);
var trimmed = file.Skip(AmountToCull).ToList();
File.WriteAllLines(filename, trimmed);
}
}