Almacenamiento de la ruta del archivo como variable para la aplicación de consola C#
-
21-08-2019 - |
Pregunta
Estoy intentando crear una aplicación de consola C# que generará un archivo de registro.Me gustaría tener cierta flexibilidad con respecto a dónde se almacenará el archivo de registro.
Intenté usar el archivo Settings.settings con:
Nombre:logDrive Tipo:cuerda Alcance:Aplicación Valor:C:\Scripts egistros
En mi código, estoy usando:
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);
Al compilar lo anterior, aparece el mensaje de error "El formato de la ruta proporcionada no es compatible".
Si ayuda, los valores para:
logDrive = "C:\Scripts\ServiceDesk\Logs" logFile = "3-23-2009 1:20 PM.log"
¿Alguien tiene alguna idea/recomendación para un mejor enfoque y/o qué estoy haciendo mal?
Solución
No se puede incluir una :
en un nombre de archivo. Un mejor enfoque podría ser el uso de un formato como
YYYYMMDD_HHMMSS.log
(por ejemplo. 20090323_231245.log
)
Esto tiene la ventaja de ser fácilmente clasificable, y que no utiliza caracteres no válidos.
Usted puede obtener esta utilizando
string logFile = string.Format("{0:yyyyMMdd_HHmmss}.log", DateTime.Now);
Notas:
Además, como se sugiere en los comentarios, debe considerar el uso Path.Combine
combinar su directorio y nombre de archivo. Esto ayudará a mitigar los problemas de arrastre separadores de ruta, etc.
Otros consejos
También deberá agregar una barra diagonal a su 'logDrive'.Es decir:
logDrive = "C:\Scripts\ServiceDesk\Logs\"
..o use Path.Combine como se sugiere en la otra respuesta