SucheBlog abonnierenVerwaltung des BlogsKategorienKontaktMarkus Brückner |
Freitag, 22. April 2011Neuer Release des Logging-TemplatesIrgendwann vor langer, langer Zeit (laut Versionshistory mittlerweile 5 Jahre her) hatte ich mal als Fingerübung ein Logging-Template in C++ geschrieben, was sich anfühlen sollte wie std::cout. Ziel war den geneigten Programmierer vom Denken zu entlasten und ihm quasi std::cout-Debugging mit etwas mehr Möglichkeiten zu erlauben. Hat offenbar damals schon gut gepasst, kurz darauf kam nämlich die Fähigkeit zur Anpassung an verschiedene Multithread-Umgebungen via Policy-Klasse dazu. Dann lag das ganze erstmal 5 Jahre im Dornröschenschlaf, in denen ich es zwar hin und wieder genutzt habe, aber eigentlich keine neuen Fähigkeiten brauchte. Bis vor kurzem... Daher jetzt: tada! ein komplett neues Release, in dem sich so einiges geändert hat. Das Frontend an sich bleibt gleich (sprich: existierender Code sollte problemlos weiter kompilieren, es sei denn er macht was total dämliches und verwendet zweimal einen Log-Level in einer Nachricht). Im Hintergrund hat sich allerdings einiges getan. Erstmal wurde der Code etwas aufgeräumt, da sich dort von verschiedenen Experimenten Reste angesammelt hatten. Dann wurde das Handling der Loglevel komplett umgebaut um eine flexiblere Ausgabe nach unten zu ermöglichen. Hintergrund: ich brauche für ein Projekt gerade die Möglichkeit Daten ins Syslog auszugeben. Dazu muss der zugrundeliegende Ausgabestream aber das Log-Level wissen. Außerdem muss er zuverlässig wissen, wann eine Nachricht beendet ist. Beides stellt das Frontend jetzt sicher. Weil's so schön war habe ich gleich noch den passenden SyslogStream beigelegt, der das Loggingfrontend an syslog() anklemmt. Benutzung ist wie üblich relativ einfach:
#include <syslogstream.hxx>
use namespace Logging;
int main(int argc, char *argv[]) {
SyslogStream slog("TestLogger");
Syslogger logger(slog, LEVEL_INFO);
logger << LEVEL_INFO << "This an INFO message which has a number attached: " << 12345 << std::endl;
logger << LEVEL_WARNING << "This is a warning message." << std::endl;
return 0;
}
Dieser Code schreibt zwei Nachrichten unter dem Präfix TestLogger ins Syslog. Die Doku der Klassen gibt noch einige Informationen her, welche Eigenschaften man zusätzlich konfigurieren kann. Das Logging-Frontend kann dank std::ostream-Kompatibilität natürlich jedes Element ausgeben, welches auf einem ostream ausgegeben werden könnte. Der Code ist weiterhin header-only, braucht also keine Installation irgendwelcher Bibliotheken, sondern kann dan public-domain-Lizenz einfach ins eigene Projekt mit übernommen werden. Wer nett sein will: mich interessiert immer, wo der Code verwendet wird. Kurze Mail an mich wäre nett (hm... sollte ich vielleicht mal in die Lizenz schreiben...) Der Code ist mittlerweile umgezogen und liegt bei Bitbucket: https://bitbucket.org/namenlos/logging/ Sonntag, 17. April 2011Rollerderby in StuttgartDas Wochenende war mal wieder Ausflugsprogramm angesagt. Was sich halt so ergibt, wenn der Freundeskreis über die Republik verteilt ist. Diesmal war Stuttgart dran. Dank unseres Gastgebers hatten wir am Samstag das Vergnügen mal einer etwas ungewöhnlichen Sportart zuzusehen: dem Roller Derby. Das ganze ist erstmal recht simpel: eine ovale Bahn und zwei Mannschaften (heute meist weiblich) auf Rollschuhen, die sich versuchen gegenseitig zu überholen, blocken, umzurempeln und was nicht alles. In der Realität ist das ganze etwas komplexer: die Teams treten in Rennen von maximal 2 Minuten Länge (sogenannte Jams) gegeneinander an. Dabei sind 2x4 Spielerinnen im "Pack" zusammengefasst und starten zuerst. Hinter dem Pack starten in einem gewissen Abstand nun die beiden "Jammer". Deren Aufgabe ist es das Pack zu überrunden und dadurch Punkte zu sammeln. Der Jammer, der dabei das Pack zum ersten Mal überholt wird "Lead Jammer" und kann den Jam jederzeit abbrechen. So drehen die Damen nun ihre Runden und versuchen Punkte zu sammeln. Punkte gibt es dabei für jeden überrundeten Gegner (gern auch mehrfach). Die "Blocker" genannten Spielerinnen aus dem Pack dürfen nach gewissen – ziemlich komplexen – Regeln durch Rempeln und Blockieren die Jammer am Punktemachen hindern. Das ganze hat gefühlte 2000 Regeln, ist aber im praktischen Einsatz ganz witzig. Blaue Flecken inklusive. Wir hatten nun gestern das Vergnügen uns die Stuttgart Valley Rollergirlz gegen die Lincolnshire Bombers aus Lincoln in Yorkshire anzuschauen. Die ganze Sportart ist von der Aufmachung her so ein wenig auf "Coolness" getrimmt (ähnlich Snowboarden) mit lauter Musik und amüsanten Kampfnamen der Spielerinnen. Die Stuttgarter haben ihre Gäste vorsichtig ausgedrückt versägt. 142:34 Punkte. Der guten Stimmung hat das auf beiden Seiten keinen Abbruch getan. Dem Vernehmen nach wurde nach dem Match noch bis in die Puppen gefeiert. Damit man sich mal ein Bild davon machen kann hier mal drei Fotos von gestern: ![]() Das "Pack": die Spielerinnen, die versuchen müssen die Jammerinnen zu blockieren. ![]() Die Jammerin der Stuttgarter. Jammer sind an dem Stern auf dem Helm zu erkennen. An der Armhaltung des Schiris im Hintergrund sieht man, dass sie in der Runde Lead Jammer war, also das Recht hatte, die Runde abzubrechen. Die Damen tragen aus Sicherheitsgründen übrigens alle Mundschutz. Stürze sind vorprogrammiert und enden manchmal auch mit einem Ausflug ins Publikum. Meist aber wohl ohne größere Schäden. ![]() Hatten eine weite Anreise mit dem Bus hinter sich: die Lincolnshire Bombers aus Yorkshire, gesponsort von Motörhead.
(Seite 1 von 1, insgesamt 2 Einträge)
|