0

テキスト メッセージをログ ファイルに記録するために StraemWriter を使用しています。ログ ファイルが存在しない場合は作成し、ファイルの作成日が指定された時刻より前の場合は追加するか、その時刻より前に作成された場合は再作成する必要があります。以下のクラス/コードを使用しています

public static class LogIt
{
    private const string LOG_FNAME = @"Logfile.log";

    public static void WriteMsg(string msg)
    {
        bool append = true;
        if (File.Exists(LOG_FNAME))
        {
            //DateTime delDate = DateTime.Now.AddDays(-1);
            DateTime delDate = DateTime.Now.AddMinutes(-30);
            DateTime fileCreatedDate = File.GetCreationTime(LOG_FNAME);
            if (DateTime.Compare(fileCreatedDate, delDate) < 0)
            {
                Console.WriteLine("DELETE FILE");
                File.Delete(LOG_FNAME);
            }
        }

        using (StreamWriter sw = new StreamWriter(LOG_FNAME, append))
        {
            sw.WriteLine(msg);
        }

        Console.WriteLine(msg);
    }
}

このクラスは、x 分ごとに実行されるタスク スケジューラによって実行される単純なコンソール アプリによって使用されます。

メッセージは次のように書かれています。

LogIt.WriteMsg("Log this message");

メッセージは、ファイルが最初に作成されたときにファイルに記録されますが、ファイルの作成日が削除日を過ぎている場合、ファイルは再作成されますが、それ以降のメッセージはファイルに書き込まれません。

理由についてのアイデアはありますか?

4

3 に答える 3

0

Windows 2003 (または XP) でこのコードを実行していると思います。その場合: T1 の時点であるディレクトリにファイルを作成し、それを削除してから再作成した場合。作成日が T1 であることに驚きました。

Windows 2003 で同じ問題が発生したという理由だけで、これを知っています。

ところで、私は現在 NLog を使用していますが、(IMHO) 完璧で、必要なものがすべて揃っています。

于 2013-05-16T22:00:47.947 に答える