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());
    }
}
War es hilfreich?

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

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