Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Manipulation von std::cout?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.12.2007, 00:16 Uhr
FunnyDingo



Hallo zusammen,

ich habe da mal eine Frage. Ich suche immer noch einen möglichst einfachen Weg, ein paar "Logging"-Ausgaben zu machen. Das Logging sieht eigentlich recht einfach aus, da ich nur std::cout/std::cerr aufrufe. Was mir nun noch fehlt, ist Datum + Uhrzeit. Daher suche ich nun einen Weg, mit dem ich std::cout/std::cerr so anpassen kann, dass noch Datum und Uhrzeit mit ausgegeben werden.

Geht das denn irgendwie, oder sollte ich den Gedanken schnell wieder verwerfen?

Gruß,
Funny
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.12.2007, 14:14 Uhr
FunnyDingo



Also syslog() fällt weg, da ich schon ein reines cout/cerr/clog machen möchte damit die Ausgabe auf der Konsole zu sehen ist. Es soll dann dem Andwender überlassen sein, ob und wie er die Ausgabe umleiten will (da dies eine reine Linux-Anwendung wird, ist das umleiten ja ziemlich easy).

Ich hatte diese Idee halt, damit ich nicht auf eine Log-Funktion/-Klasse zurückgreifen muss. Aber das scheint dann doch der bessere Weg zu sein.
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: