001
09.12.2007, 03:18 Uhr
0xdeadbeef
Gott (Operator)
|
Zum einen willst du dafür wahrscheinlich eher std::clog benutzen, das macht ggf. das Umhängen des Ziels einfacher. Zum anderen ist das in der Form garnicht so einfach - es gibt einen Haufen Designfragen dazu. Zum Beispiel, wenn du mehrere Dinge in eine Zeile schreiben willst, a la
C++: |
std::clog << __FILE__ ", Zeile " << __LINE__ << ": Dies und das" << std::endl;
|
...was für den Compiler ja effektiv das selbe ist wie
C++: |
std::clog << __FILE__ ", Zeile "; std::clog << __LINE__; std::clog << ": Dies und das"; std::clog << std::endl;
|
soll ja aller Wahrscheinlichkeit nur ein Zeitstempel ausgegeben werden. Meine erste Idee dazu wäre
C++: |
std::ostream &log(std::ostream &os = std::clog) { return os << zeitstempel(); }
// ...
log() << __FILE__ ", Zeile " << __LINE__ << ": Dies und das" << std::endl;
|
...wobei du da bei mehreren Threads aufpassen musst, dass nicht mehrmals gleichzeitig in den selben Stream geschrieben wird. In dem Fall müsstest du aber eh vor und nach der Ausgabe mutexen. Wenn's nicht portabel sein muss, böte sich u.U. auch die syslog()-Funktion an. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 09.12.2007 um 03:20 Uhr von 0xdeadbeef editiert. |