将文件路径存储为C#控制台应用程序的变量

将文件路径存储为C#控制台应用程序的变量,c#,console-application,appsettings,C#,Console Application,Appsettings,我正在尝试创建一个C#控制台应用程序,它将生成一个日志文件。我想对日志文件的存储位置有一些灵活性 我尝试将Settings.Settings文件用于: 名称:logDrive 类型:字符串 适用范围:适用范围 值:C:\Scripts\Logs 在我的代码中,我使用: string logFile = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); logFile = logFile.Repla

我正在尝试创建一个C#控制台应用程序,它将生成一个日志文件。我想对日志文件的存储位置有一些灵活性

我尝试将Settings.Settings文件用于:

名称:logDrive 类型:字符串 适用范围:适用范围 值: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” logFile=“3-23-2009下午1:20.log”


有人对更好的方法和/或我做错了什么有什么想法/建议吗?

文件名中不能包含
。更好的方法可能是使用如下格式

YYYYMMDD_HHMMSS.log
(例如
20090323_231245.log

它的优点是易于排序,并且不使用任何无效字符

你可以使用

string logFile = string.Format("{0:yyyyMMdd_HHmmss}.log", DateTime.Now);
注意事项:


此外,如注释中所建议的,您应该考虑使用<代码>路径。结合组合您的目录和文件名。这将有助于缓解尾随路径分隔符等问题。

您还需要在“logDrive”中添加尾随斜杠。即:

logDrive = "C:\Scripts\ServiceDesk\Logs\"

..或使用路径。按照另一个答案中的建议进行组合

+1。我以类似的方式命名日志文件,以便对其进行排序。您还应该使用System.IO.Path.Combine(logDrive,logFile),而不是手动将它们串联起来;)@追踪者1:我想你倒转了分钟month@ck,@Daniel L谢谢,我最后使用了:string logFile=DateTime.Now.ToString(“yyyyMMdd_HHmmss”)@womp感谢您提供System.IO.Path.Combine提示。我没有听说过这个,所以读了一些书并开始使用它。如果有人关心,请查看,谢谢您的关注。我添加了尾随斜杠。