Сохранение пути к файлу в качестве переменной для консольного приложения C #
-
21-08-2019 - |
Вопрос
Я пытаюсь создать консольное приложение на C #, которое сгенерирует файл журнала.Я хотел бы иметь некоторую гибкость в отношении того, где будет храниться файл журнала.
Я попытался использовать файл Settings.settings с:
Имя:логДрайв Тип:строка Область действия:Применение Ценность:C:\Scripts\Logs
В моем коде я использую:
string logFile = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
logFile = logFile.Replace(@"/", @"-").Replace(@"\", @"-") + ".log";
string logDrive = Properties.Settings.Default.logDrive;
StreamWriter output = new StreamWriter(logDrive + logFile);
При компиляции вышеописанного я получаю сообщение об ошибке "Формат данного пути не поддерживается".
Если это поможет, значения для:
logDrive = "C:\Scripts\ServiceDesk\Logs" Файл журнала = "3-23-2009, 13:20 вечера.log"
Есть ли у кого-нибудь какие-либо мысли / рекомендации по лучшему подходу и / или что я делаю неправильно?
Решение
Вы не можете включить :
в имени файла.Лучшим подходом могло бы быть использование такого формата, как
YYYYMMDD_HHMMSS.log
(например, 20090323_231245.log
)
Преимущество этого заключается в том, что его легко сортировать, и в нем не используются недопустимые символы.
Вы можете получить это с помощью
string logFile = string.Format("{0:yyyyMMdd_HHmmss}.log", DateTime.Now);
Примечания:
Кроме того, как было предложено в комментариях, вам следует рассмотреть возможность использования Path.Combine
чтобы объединить ваш каталог и имя файла.Это поможет устранить проблемы с разделителями конечных путей и т.д.
Другие советы
Вам также нужно будет добавить косую черту в конце вашего "logDrive".То есть:
logDrive = "C:\Scripts\ServiceDesk\Logs\"
..или используйте Path .Объедините, как предложено в другом ответе