Gibt es eine Protokollbibliothek für C? (wie log4j für C)

9

Ich habe lange in Java gearbeitet, und ich wurde beauftragt, die log4j-Bibliothek für Protokolle zu verwenden. Es ist wunderbar, und jetzt, wo ich nach C ziehe, würde ich gerne herausfinden, ob es eine ähnliche Bibliothek für Protokolle in dieser Sprache gibt.

    
tremendows 19.07.2013, 08:11
quelle

3 Antworten

10

Bisher kenne ich die folgenden Bibliotheken für die Protokollierung: log4c, sclog4c, syslog, zlog.

log4c

log4c wurde erfunden, um ein Log4J für C zu sein. Wenn Sie speziell nach "etwas wie Log4J" suchen, weil Sie wollen, dass es wie "Log4J" aussieht, dann ist das wahrscheinlich das, was Sie " suche nach.

Links

sclog4c

sclog4c wurde erfunden, um so einfach wie die am häufigsten verwendeten Funktionen von java.util.logging zu sein - so einfach wie möglich. Wenn Sie "etwas wie Log4J" suchen, weil Sie möchten, dass es so klein und einfach wie möglich ist, ist dies wahrscheinlich das, was Sie suchen.

Links

syslog

syslog wurde ursprünglich von Eric Allman als Teil von sendmail entwickelt und ist zum Defacto-Standard für Daemon / Server-Logging in POSIX-Umgebungen geworden. Es ist Client-Server-basiert, normalerweise sendet der Daemon, der etwas protokollieren möchte, die Protokolldaten an einen syslogd, der auf dem UDP-Port 514 horcht. Wenn Sie speziell nach "etwas wie Log4J" suchen, weil Sie tatsächlich einen Daemon oder Server protokollieren möchten, ist dies wahrscheinlich das, wonach Sie suchen.

Links

zlog

Dieser wurde erfunden, um wie log4c zu sein, nur - gemäß seiner Beschreibung - kleiner und flexibler zugleich.

Links

Verschiedenes

Power vs. Lean

Wegen der unterschiedlichen Art, wie C verlinkt, denkt und arbeitet, würde ich nicht nach einem Logging-Framework suchen, das im Allgemeinen - im Gegensatz zu Java - leistungsfähig ist. Wenn Sie nach "ausgereiften Desktop-Anwendungen" und darüber hinaus suchen, ist die Protokollierung mit leistungsfähigen Frameworks wie in Java sicherlich ein guter Weg. Wenn Sie Kommandozeilen-Tools oder ähnliches implementieren, wette ich, dass Ein Lean Framework ist besser - warum sollten Sie sich nur für Logging von lib2xml abhängig machen ...

Geschwindigkeit

Bei Geschwindigkeit resp. Wenn Sie aus irgendeinem Grund keine Zyklen verschwenden, suchen Sie nach einem Protokollierungs-Framework, das Makros verwendet, um die Protokollierungsstufe auszuwerten, bevor die anderen Argumente ausgewertet werden.

Der Nachteil ist, dass Sie keine Protokollroutine mit Argumenten aufrufen können, die Nebenwirkungen haben. Aber das sollte sowieso kein Anwendungsfall sein. Es wäre verblüffend, wenn Log-Anweisungen wegen Nebeneffekten nicht zu ignorieren wären.

Der Vorteil ist, dass Log-Anweisungen in einem solchen Framework so wenige Zyklen hinzufügen, dass sie fast nicht vorhanden sind - nur ein Zugriff auf einen globalen, einen Check- und einen bedingten Zweig, den Rest des Log-Codes überspringend - 2 Anweisungen, 1 Zyklus im besten Fall auf vielen der heutigen CPUs.

Haftungsausschluss

Ich bin der Autor von sclog4c.

    
Christian Hujer 18.12.2014, 17:12
quelle
3

Es gibt eine log4c C-Bibliothek, die die log4j Java-Bibliothek nachahmt. Aus der log4c-Dokumentation:

  

Es ist so modelliert, dass die Log for Java-Bibliothek so nah bei ihren ist   API als sinnvoll.

    
user11617 19.07.2013 08:16
quelle
1

Eine weitere zu berücksichtigende Option ist zf_log :

  • Debug-Protokollierung wird in Release-Builds (kompiliert) auf No-Op reduziert
  • Argumente werden nicht ausgewertet, wenn die Nachricht nicht protokolliert wird
  • Keine "unbenutzte" Warnung für Variablen, die nur in Protokollanweisungen verwendet werden
  • Protokollieren Sie eine Speicherregion als HEX und ASCII
  • Optionale integrierte Unterstützung für Android-Protokoll und Apple-Systemprotokoll (iOS, OS X)
  • Benutzerdefinierte Ausgabefunktionen (Datei, Syslog usw.)

Zum Beispiel wird das INFO-Log-Nachricht ausgegeben:

%Vor%

Was wie folgt aussehen wird:

%Vor%

Die genaue Darstellung ist konfigurierbar und hängt vom Build-Typ ab (Debug / Release).

    
wonder.mice 01.12.2015 09:29
quelle

Tags und Links