Sollte ich die log-Meldungen an stderr oder stdout?
Ich habe ein Programm mit dem ich Schreibe, dass ich schreiben möchte eine benutzerdefinierte logging-Funktion (z.B. Diagnose -, Hinweis, Warnung, Fehler).
Soll ich mich mit den stdout
oder die stderr
stream zu tun? Es ist ein interpreter, der Sorten und der Benutzer kann es Fragen zu print Ausgabe.
Edit: Bitte Hör mir empfehlen logging-frameworks 🙁
- Wenn Sie eine Sprache wie java, warum nicht verwenden Sie eine der berühmten logging-frameworks wie log4j?
- Ich würde wirklich empfehlen, dass Sie einen Blick auf einige logging-Bibliotheken vor die Ausgaben der Zeit implementieren der Protokollierung. Wenn Sie lassen Sie uns wissen, welche Sprache Sie schreiben, ich bin sicher, es werden viele Vorschläge.
- Welche Sprache verwenden Sie?
- welche Sprache verwenden Sie? Ist es c oder c++?
- Die ersten vier Kommentatoren scheinen zu denken, dass rfw bittet um Hilfe zum schreiben von logging-code. Er ist es nicht. Er hat bereits seine Entscheidung getroffen und er ist einfach Fragen, was die best practices sind für das high-level Verhalten eines logging-system. Die Sprache, die er verwendet, ist irrelevant. flash, dein Kommentar hätte mehr hilfreich, wenn Sie uns gerade sagte, ob log4j verwendet stderr oder stdout.
- +1 Fantastische Frage!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Reguläre Ausgabe (das Ergebnis der Ausführung des Programms) sollte
stdout
Dinge wie du Sie erwähnt hast (z.B. Diagnose -, Hinweis, Warnung, Fehler) aufstderr
.Wenn es keine "reguläre Ausgabe", würde ich sagen, dass es eigentlich egal ist, welche man wählt. Man könnte argumentieren, dass die Protokollierung ist die einzige Ausgabe, also das sollte gehen
stdout
. Oder man könnte argumentieren, dass es immer noch "außergewöhnliche Informationen", das sollte gehenstderr
.stdout
. Es kann die Unterstützung für das drucken zustderr
, aber ich denke, das ist Ihre eigene Beerdigung...Tun Sie etwas anderes schreiben zu
stdout
? Wenn die Antwort istYes
dann wäre es ziemlich schwer für jemanden, um zu unterscheiden zwischen normalen Fluss und Fehler in der Mitte der Datei, die verwendet wurde, um die Umleitung vonstdout
.Was ist, wenn
stdout
verwendet werden, die als Eingabe für ein anderes Programm? Wird es in der Lage sein, zu analysieren, diese mit debug-Informationen? In diesem Fall wäre es gut, zu schreiben, nur kritische Fehler zustderr
. Wenn Sie brauchen, um zu schreiben, etwas anderes, das man berücksichtigen kann, um zu schreiben zusätzliche log-Datei.