Question

Je suis en train de créer une application console C # qui va générer un fichier journal. Je voudrais avoir une certaine flexibilité avec laquelle le fichier journal sera stocké.

J'ai essayé d'utiliser le fichier Settings.settings avec:

Nom: logdrive Type: chaîne Champ d'application: Application Valeur: C: \ Scripts \ Logs

Dans mon code, j'utilise:

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);

Lors de la compilation qui précède, je reçois le message d'erreur « Le format du chemin donné est pas en charge ».

Si elle aide, les valeurs:

logdrive = "C: \ Scripts \ ServiceDesk \ Logs" logFile = "23/03/2009 01:20 PM.log"

Quelqu'un at-il des idées / recommandations pour une meilleure approche et / ou ce que je fais mal?

Était-ce utile?

La solution

Vous ne pouvez pas inclure un nom de fichier dans :. Une meilleure approche pourrait être d'utiliser un format comme

YYYYMMDD_HHMMSS.log

(par exemple. 20090323_231245.log)

Ceci a l'avantage d'être facilement classable, et il n'utilise pas de caractères non valides.

Vous pouvez obtenir cela en utilisant

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

Notes:

En outre, comme l'a suggéré dans les commentaires, vous devriez envisager d'utiliser pour combiner votre Path.Combine répertoire et nom de fichier. Cela aidera à atténuer les problèmes avec des séparateurs de chemin de fuite, etc.

Autres conseils

Vous devez également ajouter une barre oblique à votre « logdrive ». I.e.:

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

.. ou de l'utilisation Path.Combine comme suggéré dans l'autre réponse

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top