Redirect-System.aus.println Log4J, während Klassennamen Informationen
Habe ich einige Bibliotheken, die den Aufruf System.aus.println auf mich, würde ich mag, um Sie umzuleiten durch log4j oder commons logging. Aber insbesondere würde ich gerne halten Sie den fully-qualified-classname, damit ich weiß, welche Komponente generiert die Protokolle.
Ist es eine schöne, geordnete Art und Weise, dies zu erreichen?
UPDATE: Nach dem ausführen, dies habe ich geschrieben der code hier:
Was sind die Auswirkungen, wenn ich entfernen Sie das locking-Verhalten in der Umsetzung zur Verbesserung der Leistung der Anwendung?
InformationsquelleAutor David Parks | 2011-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einzige Möglichkeit die ich mir denken kann wäre, ein eigenes zu schreiben
PrintStream
Umsetzung erstellt, die einen stack-trace, wenn derprintln
- Methode aufgerufen wurde, um den Namen der Klasse. Es wäre ziemlich schrecklich, aber es sollte funktionieren... proof-of-concept-code Beispiel:(In Ihrem code Sie es machen würde, log log4j anstelle von natürlich... oder vielleicht auch.)
InformationsquelleAutor Jon Skeet
Wenn Sie können den Quellcode ändern, dann haben Sie einen Blick auf die Eclipse-Plugin Log4E. Es bietet eine Funktion zum konvertieren System.aus.println in logger Aussagen (und viele andere Coole Sachen Umgang mit logging).
Die einzige Sache, die kommt sich zu kümmern, wenn Sie nicht ändern können-source-code-byte-code manipulation, aber Sie brauchen, um abzufangen, die class-loading-Prozess, und erstellen Sie eine neue Klasse-Datei mit dem System.aus ersetzt mit Logger Aussagen, aber das hört sich Weg, um intensive
scratch, dass, Jon Skeet kam die Rettung 🙂
InformationsquelleAutor Ralph