Hi an alle.
Ich möchte ein Log meiner Applikation schreiben und dabei Zeilenweise den abgearbeiteten Befehl in eine Textdatei schreiben.
Die Funktion an sich funktioniert super, nur zeigt er mir in jeder Zeile die gleiche Uhrzeit an. Wie kann ich die aktualisieren, oder was habe ich bei meinem Ansatz falsch gemacht?
DateTime aktuell = DateTime.Now;
string LogFile = "logfile.txt";
public void AppendLogFile(string sFilename, string sLines)
{
StreamWriter myFile = new StreamWriter(sFilename, true);
myFile.Write(sLines);
myFile.Close();
}
AppendLogFile(LogFile, aktuell.Date.Day + "." + aktuell.Date.Month + "." + aktuell.Date.Year + "-" + aktuell.TimeOfDay.Hours + ":" + aktuell.TimeOfDay.Minutes + ":" + aktuell.TimeOfDay.Seconds + "TEST" + "\r\n");
Hallo lnino,
du initialisierst aktuell
zwar einmal mit dem Zeitstempel DateTime.Now
, allerdings aktualisierst du den Wert nicht. Daher wird beim Aufruf der Methode AppendLogFile
immer auf den gleichen Wert zugegriffen.
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
AppendLogFile(LogFile, aktuell.Date.Day + "." + aktuell.Date.Month + "." + aktuell.Date.Year + "-" + aktuell.TimeOfDay.Hours + ":" + aktuell.TimeOfDay.Minutes + ":" + aktuell.TimeOfDay.Seconds + "TEST" + "\r\n");
BTW: Das ist äußerst unschön: Schaue dir einmal die Überladungen von String.Format bzw. von DateTime.ToString an.
Hi m0rius.
Danke für den Hinweis.
Habe nun vor dem schreiben in die Textdatei mittels....
aktuell = DateTime.Now
...die Uhrzeit aktualisiert.
Hallo lnino,
zeig uns doch nochmal deinen Code, wie er jetzt aussieht!
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
DateTime aktuell = DateTime.Now;
string LogFile = "logfile.txt";
public void AppendLogFile(string sFilename, string sLines)
{
StreamWriter myFile = new StreamWriter(sFilename, true);
myFile.Write(sLines);
myFile.Close();
}
aktuell = DateTime.Now;
AppendLogFile(LogFile, aktuell.Date.Day + "." + aktuell.Date.Month + "." + aktuell.Date.Year + "-" + aktuell.TimeOfDay.Hours + ":" + aktuell.TimeOfDay.Minutes + ":" + aktuell.TimeOfDay.Seconds + "TEST" + "\r\n");
Ist zwar noch immer unschön, aber funktioniert.
Was mir dabei aber aufgefallen ist, dass es bei der Uhrzeit keine führenden Nullen gibt. Ist das normal, oder kann ich das irgendwie anpassen?
Es wird nämlich so dargestellt: 12:5:3 anstelle von 12:05:03
Das funktioniert so aber eher nicht, wie es da steht?! Bei den Zahlen fehlt ToSstring().
Und ja, ist immer noch unschön.
Immer noch der Hinweis, dir mal DateTime.ToString anzusehen. Damit kriegst du die Werte nämlich zweistellig hin.
Hallo lnino,
schön, dass es jetzt funktioniert. Ich würde dir allerdings wirklich raten, dich mit winSharp93s Hinweis auseinanderzusetzen und die für die Datumsformatierung vom .NET-Framework vorgesehen Klassen zu verwenden.
Hallo chilic,
nein, die Zahlen müssen nicht explizit mit ToString()
in einen String konvertiert werden. Durch die Verkettung der Strings mit dem "+"-Operator ist das nicht nötig.
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Was mir dabei aber aufgefallen ist, dass es bei der Uhrzeit keine führenden Nullen gibt. Ist das normal, oder kann ich das irgendwie anpassen?
Es wird nämlich so dargestellt: 12:5:3 anstelle von 12:05:03
Hat von euch jemand für das obenstehende Problem mit den fehlenden führenden Nullen eine Erklärung? Ich komm da nicht dahinter.
P.s.: Werde mich anschließend an die saubere Gestaltung meines Codes machen. 😃
Hallo lnino,
Hat von euch jemand für das obenstehende Problem mit den fehlenden führenden Nullen eine Erklärung?
Das kannst du durch Verwendung der - inzwischen mehrfach genannten - ToString-Methode von DateTime lösen.
Dass ein einfaches Int32.ToString (was durch die Verkettung mit dem +-Operator) implizit aufgerufen wird, keine führenden 0er hinzufügt, ist auch sehr sinnvoll: Im Prinzip könnte ja man beliebig viele anhängen - woher sollte da klar sein, nach wie vielen 0ern Schluss sein sollte.
Aber so etwas fällt unter die Grundlagen. Wärst du den zahlreichen Hinweisen nachgegangen und hättest einen Blick in die Doku geworfen, hättest du das Problem sehr schnell selbst lösen können. Siehe [Hinweis] Wie poste ich richtig?
==> Geschlossen