In C++ gibt es kein De-facto-Standardprotokollierungswerkzeug. Meiner Erfahrung nach rollen Läden ihre eigenen. Dies verursacht jedoch ein gewisses Problem, wenn wiederverwendbare Softwarekomponenten erstellt werden sollen. Wenn alles in Ihrem System von der Protokollierungskomponente abhängt, macht dies die Software weniger wiederverwendbar, was im Grunde alle nachgeschalteten Projekte dazu zwingt, Ihr Protokollierungs-Framework zusammen mit den Komponenten zu verwenden, die sie wirklich wollen.Opfern C++ - Logging-Frameworks die Wiederverwendbarkeit?
IOC (Abhängigkeitsinjektion) hilft nicht wirklich mit dem Problem, da Ihre Komponenten von einer Protokollierungsabstraktion abhängen müssten. Das Protokollieren von Komponenten selbst kann Abhängigkeiten von Datei-E/A, Auslösemechanismen und anderen möglicherweise unerwünschten Abhängigkeiten hinzufügen.
Wird durch die Hinzufügung einer Abhängigkeit zu Ihrem proprietären Protokollierungsrahmen die Wiederverwendbarkeit der Komponente beeinträchtigt?
+1, ich bin in dieser exakten Situation selbst, meine Projekt-Hauptimplementierung hat eine abstrahierte Logging-Framework, die zusätzliche Informationen protokolliert, die ich will ... Aber es verwendet Bibliotheken, die auch ein (anderes) Logging-Framework haben, aber zum Glück Sie erwarten auch, dass ein Objekt, das das Framework einkapselt, übergeben wird. Also baue ich ein Objekt auf, implementiere es in Bezug auf mein aktuelles Logging-Framework, und weg geh ich! – Arafangion