StreamWriter не создает новый файл - PullRequest
3 голосов
/ 22 марта 2010

Я пытаюсь создать новый файл журнала каждый час со следующим кодом, работающим на сервере. Первый файл журнала дня создается и записывается в штраф, но в этот день больше не создаются файлы журналов. Есть идеи, что может пойти не так? Также не выдается никаких исключений.

private void LogMessage(Message msg)
{
    string name = _logDirectory + DateTime.Today.ToString("yyyyMMddHH") + ".txt";

    using (StreamWriter sw = File.AppendText(name))
    {
        sw.WriteLine(msg.ToString());
    }
}

Ответы [ 4 ]

6 голосов
/ 22 марта 2010

Использование DateTime.Today обнуляет часть времени. Вы должны использовать DateTime.Now или DateTime.UtcNow, чтобы возвращаемый DateTime содержал час, отличный от нуля.

1 голос
/ 22 марта 2010

Сегодня только дает текущую дату.Таким образом, HH всегда "00".Вместо этого попробуйте DateTime.Now.ToString ("yyyyMMddHH").

0 голосов
/ 22 марта 2010

Причина, по которой вы получаете только один файл, заключается в том, что вы используете DateTime.Today вместо DateTime.Now. DateTime.Today - это то же значение, что и DateTime.Now, но с элементом времени, установленным на полночь (00:00).

DateTime.Now.ToString("yyyyMMddHH") производит "2010032211"

DateTime.Today.ToString("yyyyMMddHH") производит "201032200" (без временной части)

В случае DateTime.Today вы увидите одно и то же значение независимо от времени суток. Вот почему вы получаете только первый созданный файл, поскольку ваш код в настоящее время будет создавать уникальное имя файла только каждый день, а не каждый час.

Измените DateTime.Today на DateTime.Now, и ваша проблема решена.

0 голосов
/ 22 марта 2010

Похоже, ваш путь был неверным из-за использования datetime.today. Попробуйте использовать Path.Combine для предотвращения других ошибок, таких как добавление '/' и т. Д. MSDN

...