Domanda

Sto cercando di creare un'applicazione console C# che genera un file di log.Mi piacerebbe avere un po ' di flessibilità in cui il file di registro dovrà essere conservato.

Ho provato con le Impostazioni.impostazioni dei file con:

Nome:logDrive Tipo:string Campo di applicazione:Applicazione Valore:C:\Scripts\Logs

Nel mio codice che sto 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);

Durante la compilazione di sopra ottengo il messaggio di errore "Il percorso del formato non è supportato."

Se aiuta, i valori:

logDrive = "C:\Scripts\ServiceDesk\Logs" logFile = "3-23-2009 1:20 PM.registro"

Qualcuno ha qualche idea e/ o raccomandazioni per un approccio migliore e/ o che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Non è possibile includere un : in un nome di file. Un approccio migliore potrebbe essere quella di utilizzare un formato simile

YYYYMMDD_HHMMSS.log

(es. 20090323_231245.log)

Questo ha il vantaggio di essere facilmente ordinabile, e non fa uso di caratteri non validi.

È possibile ottenere questo usando

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

Note:

Inoltre, come suggerito nei commenti, si dovrebbe considerare l'utilizzo di Path.Combine per combinare la directory e il nome del file. Questo aiuterà a mitigare i problemi con trailing separatori di percorso, ecc.

Altri suggerimenti

Avrete anche bisogno di aggiungere uno slash finale per il 'logDrive'.I. e:

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

..o utilizzare il Percorso.Combinare come suggerito nell'altra risposta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top