diff --git a/README.md b/README.md index 35d54aa..4125bfb 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ dotnet run --project src/Sms.TaskTwo.Avalonia/Sms.TaskTwo.Avalonia.csproj Класс `Sms.TaskTwo.Core.Logging.ConsoleLog` — дублирует записи в консоль и файл. -По умолчанию для GUI: `logs/test-sms-wpf-app-yyyyMMdd.log`. При вызове `ConsoleLog.Open()` без имени — `test-sms-console-app-yyyyMMdd_HHmmss.log`. +По умолчанию для GUI: `logs/test-sms-wpf-app-yyyyMMdd-hh:mm:ss.log` (на Windows двоеточия во времени заменяются на `-`). При вызове `ConsoleLog.Open()` без имени — `test-sms-console-app-yyyyMMdd_HHmmss.log`. Пример строки: diff --git a/src/Sms.TaskTwo.Core/DependencyInjection/ServiceCollectionExtensions.cs b/src/Sms.TaskTwo.Core/DependencyInjection/ServiceCollectionExtensions.cs index 0fc3b61..7ca1c02 100644 --- a/src/Sms.TaskTwo.Core/DependencyInjection/ServiceCollectionExtensions.cs +++ b/src/Sms.TaskTwo.Core/DependencyInjection/ServiceCollectionExtensions.cs @@ -28,9 +28,13 @@ public static class ServiceCollectionExtensions { var options = serviceProvider.GetRequiredService>().Value; Directory.CreateDirectory(options.LogDirectory); - var fileName = Path.Combine( - options.LogDirectory, - $"test-sms-wpf-app-{DateTime.Now:yyyyMMdd}.log"); + var timestamp = DateTime.Now.ToString("yyyyMMdd-hh:mm:ss"); + var logFileName = SanitizeFileName($"test-sms-wpf-app-{timestamp}.log"); + var fileName = Path.Combine(options.LogDirectory, logFileName); return ConsoleLog.Open(fileName); } + + private static string SanitizeFileName(string fileName) => + string.Concat(fileName.Select(static c => + Path.GetInvalidFileNameChars().Contains(c) ? '-' : c)); }