Вопрос

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

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

    using (StreamWriter sw = File.AppendText(name))
    {
        sw.WriteLine(msg.ToString());
    }
}
Это было полезно?

Решение

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

Другие советы

Сегодня указывается только текущая дата.Таким образом, HH всегда равен "00".Попробуйте вместо этого DateTime.Now.toString("ГГГГМДДХ").

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top