Ich suchte und fand this post. Sehr interessant. Als Infrastrukturmanager/-techniker habe ich von vielen Software, die ich verwende (und verwendet habe), immer die Möglichkeit, so tiefgründigere Informationen wie möglich zu finden, um Probleme zu identifizieren und zu beheben, Sicherheitsvorschlag. Viele Male sehen wir uns mit einigen Problemen konfrontiert, dass wir selbst im Debug-Modus nicht in der Lage sind, die genaue Ursache des Problems zu finden, sondern nur die "wahrscheinliche" Ursache gefunden haben. Wenn ich jetzt zurück in die Entwicklungswelt gehe und sehe, wie Entwickler mit Logs und Bibliotheken arbeiten, denke ich, dass dies ein Grund sein könnte (der Mangel an "Interoperabilität zwischen den Hauptprogrammen und seinen Bibliotheken). Da Bibliotheken normalerweise" ihre eigenen haben "Logging (oder überhaupt nicht Logging) und viele Male, gibt keine" vollständige Kontrolle "über das, was in der Bibliothek passiert, in den meisten Fällen wird der Entwickler, der das Hauptprogramm entwickelt (unter Verwendung solcher Bibliotheken), nicht in der Lage sein Ich verstehe natürlich, dass Sie in der Open Source-Welt, wenn Sie detailliertere Informationen haben möchten, einschließlich der von Ihnen verwendeten Bibliotheken, da es Open Source ist, Ihre Änderungen einfach vornehmen können und dann ist es getan, aber dann könnte dies die Verwendung einer Bibliothek (die den Vorteil hat, Bibliotheken zu benutzen, um nicht Zeit zu verlieren, um das Rad neu zu erstellen, in anderer Welt Wiederverwendbarkeit) nicht so hilfreich sein, wie es sein sollte Als die referenzierte Post, eine Möglichkeit, damit umzugehen, ist, immer die notwendigen Informationen an den Anrufer zu senden. Aber normalerweise funktioniert es für Fehler, Fatals und vielleicht Info-Level-Events. Aber für Debug und Trace zum Beispiel ist es bei der Entwicklung von Bibliotheken (aus vielen Gründen) nicht "praktisch", und dann denke ich, dass ein großer Grund ist, dass ein Entwickler, wenn er eine Bibliothek entwickelt, bereits alle Debugs und Traces benötigt zum Testen, aber nicht unbedingt zurück zum Anrufer. Ein anderer Weg, der in der Post beschrieben wird, ist die Verwendung von Handlern, aber dadurch wird der Entwickler der Bibliothek viel mehr zu tun haben. Wie Andy geantwortet hat (und auch in der Post besprochen wird), besteht eine Alternative darin, eine Schnittstelle zu erstellen, die den Programmlogger des Hauptprogramms empfängt und verwendet, und damit diese Option ordnungsgemäß funktioniert, sollte das stdlib-Protokoll (oder eine Protokollierungsbibliothek) verwendet werden implementieren Sie die meisten Protokollierungsstufen) für den Fall, dass das aufrufende Programm die Protokollierung nicht berücksichtigt. Für meine "Wünsche" gerade jetzt (wie ich bin in Programmieren wieder und beginne in Go), werde ich einen "hässlichen Code" erstellen, um meine Bedürfnisse zu erfüllen und weiter zu lernen und Wege zu versuchen, das "perfekte Logging System" zu erreichen Inzwischen benutzt IMHO Schnittstellen wie Andy vorgeschlagen hat.
Danke. Ich werde etwas versuchen und dich über das Ergebnis informieren. – Tuts