Группировка записи в файл-текстовик с временным разделением в 3 часа
Всем привет, я пишу участок кода, который будет собирать инфу по логам раскидывая по папкам ../дата/файл(11:00:00- 14:00:00).txt; у меня получился такой участок кода:
DirectoryInfo dir = new DirectoryInfo(@"logger");
if (!dir.Exists)
{
dir.Create();
}
var data = Console.ReadLine();
DirectoryInfo directory = new DirectoryInfo(@$"logger/{DateTime.UtcNow.ToShortDateString()}");
if (!directory.Exists)
{
directory.Create();
}
File.AppendAllText(@$"logger/{DateTime.UtcNow
.ToShortDateString()}/{DateTime.UtcNow
.ToShortTimeString().Replace(':', '.')} - {DateTime
.UtcNow.AddHours(3)
.ToShortTimeString()
.Replace(':', '.')}.txt", data + " \n", Encoding.UTF8);
}
И у меня есть вопрос, как в течение 3 часов записывать в один и тот же файл? тоесть что бы не создавался ../дата/12:01:00 - 15:01:00.txt , 12:02:00 - 15:02:00.txt . Короче чтобы данные записывались не раздельно, а в один и тот же файл на промежутке 12:01:00 - 15:01:00.txt
Ответы (1 шт):
Автор решения: tym32167
→ Ссылка
Я бы первым делом так не делал, а искал бы готовые логгеры.
Но если вы настроены серьезно такое писать руками, но в таких случаях надо нормализовать время. Например
string GetLogFilename(DateTime dt)
{
var newDateTime = new DateTime(dt.Year, dt.Month, dt.Day, (dt.Hour / 3) * 3, 0, 0, 0, dt.Kind);
return newDateTime.ToString("yyyy_MM_dd_HH") + ".log";
}
Проверить это можно так
for (int i = 0; i < 30; i++)
{
Console.WriteLine($"{DateTime.Now.AddHours(i).ToString("yyyy_MM_dd_HH")} - {GetLogFilename(DateTime.Now.AddHours(i))}");
}
Вывод
2021_02_24_13 - 2021_02_24_12.log
2021_02_24_14 - 2021_02_24_12.log
2021_02_24_15 - 2021_02_24_15.log
2021_02_24_16 - 2021_02_24_15.log
2021_02_24_17 - 2021_02_24_15.log
2021_02_24_18 - 2021_02_24_18.log
2021_02_24_19 - 2021_02_24_18.log
2021_02_24_20 - 2021_02_24_18.log
2021_02_24_21 - 2021_02_24_21.log
2021_02_24_22 - 2021_02_24_21.log
2021_02_24_23 - 2021_02_24_21.log
2021_02_25_00 - 2021_02_25_00.log
2021_02_25_01 - 2021_02_25_00.log
2021_02_25_02 - 2021_02_25_00.log
2021_02_25_03 - 2021_02_25_03.log
2021_02_25_04 - 2021_02_25_03.log
2021_02_25_05 - 2021_02_25_03.log
2021_02_25_06 - 2021_02_25_06.log
2021_02_25_07 - 2021_02_25_06.log
2021_02_25_08 - 2021_02_25_06.log
2021_02_25_09 - 2021_02_25_09.log
2021_02_25_10 - 2021_02_25_09.log
2021_02_25_11 - 2021_02_25_09.log
2021_02_25_12 - 2021_02_25_12.log
2021_02_25_13 - 2021_02_25_12.log
2021_02_25_14 - 2021_02_25_12.log
2021_02_25_15 - 2021_02_25_15.log
2021_02_25_16 - 2021_02_25_15.log
2021_02_25_17 - 2021_02_25_15.log
2021_02_25_18 - 2021_02_25_18.log