Frage

Ich versuche, eine C # Konsolenanwendung zu erstellen, die eine Protokolldatei generieren. Ich möchte eine gewisse Flexibilität haben, mit dem die Protokolldatei gespeichert werden.

Ich habe versucht, die Settings.settings mit Datei mit:

Name: logDrive Typ: Zeichenkette Zweck: Anwendung Wert: C: \ Scripts \ Logs

In meinem Code verwende ich:

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

Wenn Sie die oben Kompilieren ich die Fehlermeldung „Das Format der angegebenen Pfad wird unterstützt.“

Wenn es hilft, die Werte für:

logDrive = "C: \ Scripts \ ServiceDesk \ Logs" logFile = "2009.03.23 01.20 PM.log"

Hat jemand irgendwelche Gedanken / Empfehlungen für einen besseren Ansatz und / oder was ich falsch mache?

War es hilfreich?

Lösung

Sie können keine : in einem Dateinamen enthalten. Ein besserer Ansatz könnte sein, ein Format zu verwenden, wie

YYYYMMDD_HHMMSS.log

(z. 20090323_231245.log)

Dies hat den Vorteil, leicht sortierbar zu sein, und es verwendet keine ungültigen Zeichen.

Sie können diese erhalten mit

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

Weitere Informationen:

Wie auch in den Kommentaren vorgeschlagen, sollten Sie die Verwendung Path.Combine betrachten zu Ihrem Verzeichnis und Dateinamen zu kombinieren. Dies wird helfen, Probleme zu beheben, mit Pfadtrennhinter, etc.

Andere Tipps

Sie müssen auch einen Schrägstrich zu Ihrem ‚logDrive‘ hinzuzufügen. Das heißt:

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

.. oder Verwendung Path.Combine wie in der anderen Antwort vorgeschlagen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top