Le stockage Chemin du fichier comme variable pour C # Application console
-
21-08-2019 - |
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?
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