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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top