Stream Erstellung nicht neue Datei
-
21-09-2019 - |
Frage
Ich versuche, eine neue Protokolldatei jede Stunde mit dem folgenden Code, der auf einem Server zu erstellen. Die erste Protokolldatei des Tages wird die Fein erstellt und geschrieben, aber keine weiteren Protokolldateien an diesem Tag erstellt bekommen. Irgendwelche Ideen, was könnte schief gehen werden? sind entweder keine Ausnahmen geworfen.
private void LogMessage(Message msg)
{
string name = _logDirectory + DateTime.Today.ToString("yyyyMMddHH") + ".txt";
using (StreamWriter sw = File.AppendText(name))
{
sw.WriteLine(msg.ToString());
}
}
Lösung
Die Verwendung von DateTime.Today
nullt die Zeit Teil. Sie sollten DateTime.Now
oder DateTime.UtcNow
verwenden, so dass die zurück DateTime
eine Stunde anders als Null enthält.
Andere Tipps
Heute gibt nur das aktuelle Datum. So HH ist immer "00". Versuchen Sie DateTime.Now.ToString ( "JJJJMMTTHH") statt.
Der Grund sind Sie nur eine Datei bekommen ist aufgrund Ihrer Nutzung DateTime.Today
statt DateTime.Now
. DateTime.Today
ist der gleiche Wert wie DateTime.Now
, aber mit der Zeit Elementsatz bis Mitternacht (00:00).
DateTime.Now.ToString("yyyyMMddHH")
erzeugt "2010032211"
DateTime.Today.ToString("yyyyMMddHH")
produziert "201032200" (keine Zeit Teil)
Im Fall von DateTime.Today
, werden Sie den gleichen Wert sehen, unabhängig von der Tageszeit. Aus diesem Grund werden Sie nur die erste Datei erstellt, wie Sie den Code bekommen wird zur Zeit nur jeden Tag einen eindeutigen Dateinamen erstellen, anstatt jede Stunde.
Ändern DateTime.Today
zu DateTime.Now
und Ihr Problem gelöst ist.
Es scheint, Ihr Weg durch die datetime.today Nutzung nicht korrekt war. Versuchen Sie Path.Combine in der Funktion zu verwenden, um andere Fehler zu vermeiden, wie ‚/‘ Hinzufügen etc MSDN