System.out.println mit log4j ersetzen

freez

Top Contributor
Hallo,

gibt es eine Möglichkeit System.out.println umzuleiten um diese standardmäßig mit log.debug (log4j) zu verarbeiten?
Hintergrund ist folgender: Bis jetzt gibt es in einer bestehenden Anwendung nur System.out.println und diese möchte ich auf Konsole und Files im log4j Format umleiten (vielleicht auch mal ein anderes Ziel, was mit log4j möglich wäre)
 

mvitz

Top Contributor
Nach > 400 Beiträgen, müsstest du eigentlich wissen, wie man nach sowas googled ;) Aber hier mal eine mögliche Lösung: System.out and System.err over log4j /home/edivad

Ansonsten wäre es sicherlich eleganter (weiß ja nicht, von wieviel Klassen/aufrufen wir hier sprechen. Mit grep/sed bzw. search & replace das ganze direkt auf Log4j umzustellen und die System.out aufrufe zu entfernen.
 
G

Gast2

Gast
Ich habe mir mal einen Appender für log4j geschrieben der die sysout und syserr aufrufe nach log4j umgeleitet und geloggt hat.
den code könnte ich dir heut abend mal posten wenn du magst.
 

freez

Top Contributor
Nach > 400 Beiträgen, müsstest du eigentlich wissen, wie man nach sowas googled ;)

Davon kannst du ausgehen. Du wirst lachen, aber auch wenn man Google bedienen kann, heißt das nicht, dass man fündig wird. Nach einer halben Stunde Suche habe ich aufgegeben und dachte, es gibt hier vielleicht nen Fachmann, der sich mit sowas auskennt. Es kann gut möglich sein, dass ich mich einfach nur zu dumm angestellt habe.

Aber nix für ungut: Danke für den Tipp, das sieht vielversprechend aus.
 

freez

Top Contributor
Ich habe mir mal einen Appender für log4j geschrieben der die sysout und syserr aufrufe nach log4j umgeleitet und geloggt hat.
den code könnte ich dir heut abend mal posten wenn du magst.

Danke, aber ich melde mich noch mal, sollte der Tipp von mvitz nicht den gewünschten Erfolg bringen. Dann musst du dir nicht die Arbeit machen.

PS: Schaden würde es aber nicht eine Alternative zu haben ... vielleicht ist es ja für einen Besucher in Zukunft interessant ;)
 

freez

Top Contributor
Ansonsten wäre es sicherlich eleganter (weiß ja nicht, von wieviel Klassen/aufrufen wir hier sprechen. Mit grep/sed bzw. search & replace das ganze direkt auf Log4j umzustellen und die System.out aufrufe zu entfernen.

Wäre mir eigentlich auch lieber, aber es gibt nun mal Stellen, die man ungern anfasst und nur ändert, wenn es nicht anders geht.
 

mvitz

Top Contributor
Ok, war ja auch nicht böse gemeint, hatte mich nur gewundert, dass du bei Google nichts gefunden hast, vermutlich irgendwie die falsche Kombination.

Ja hast recht, wobei ein Search/Replace auf System.out.println mit LOGGER.debug und anschließend in Eclipse in jeder Klasse die einen Fehler hat ein einfügen von (mit einem Eclipse Template gehts noch schneller)

private static final Logger LOGGER = Logger.getLogger(MyClass.class);

ist jetzt nichts, was Logik ändert :)
 

freez

Top Contributor
ist jetzt nichts, was Logik ändert :)

Richtig! Das wäre ja mein bevorzugter Weg. Nur sobald dieselbe jar an unterschiedlichen Stellen mit unterschiedlichen Abhängigkeiten und mit unterschiedlichen Java Versionen laufen soll, und man nicht alle Konstellationen testen kann, sollte man ziemlich vorsichtig sein mit einem globalen Replace. Deswegen würde ich lieber für bestimmte Einsätze der Jar den Stream auf log4j umleiten. Von der Sache her geht es mir eigentlich nur darum den Stream aufs Filesystem zu lenken (wäre sogar am einfachsten mit '>'). Nur da ich eh schon mit log4j arbeite, wäre es mir lieb, den output in den selben Files zu finden, wie die log4j Ausgaben.
 

mvitz

Top Contributor
Ah, das erklärt einiges.

Naja, dann viel Glück und könntest ja hier nochmal Bescheid geben, wenn die von mir verlinkte Lösung funktioniert hat.
 
G

Gast2

Gast
Falls es noch interessiert, so habe ich das damals gemacht:

Java:
        if (redirectConsole) {
              System.setErr(new LoggerPrintStream());
              System.setOut(new LoggerPrintStream());
        }

Java:
public class LoggerPrintStream extends PrintStream {

    public LoggerPrintStream() {
        super(new LoggerOutputStream());
    }
}

Java:
public class LoggerOutputStream extends OutputStream {

    private StringBuilder buffer;

    private static Logger logger = Logger.getRootLogger();

    public LoggerOutputStream() {
        buffer = new StringBuilder();
    }

    public void write(final int b) {
        char c = (char)b;
        if (c == '\n') {
            logger.error(buffer.toString());
            buffer.delete(0, buffer.length());
        } else {
            buffer.append(c);
        }
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Java System.out::println Allgemeine Java-Themen 1
V System.out.println an jeder Stelle im Projekt löschen Allgemeine Java-Themen 4
D Listener auf System.out.err / System.out.println Allgemeine Java-Themen 5
E System.out.println Allgemeine Java-Themen 5
G System.out.println(is.getClass().getName()); Allgemeine Java-Themen 15
A System.out.println mit Farbe Allgemeine Java-Themen 6
B Console Anwedung mit Rewrite auf ein System.out.println ? Allgemeine Java-Themen 3
N Farbe ändern bei System.out.println Allgemeine Java-Themen 2
X Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen Allgemeine Java-Themen 7
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
B Lottospielen mit System, Versuch 2, noch umständlicher als vorher Allgemeine Java-Themen 1
J Frage zu System.getproperties. Allgemeine Java-Themen 60
sascha-sphw Erste Schritte Unit und Integration-Tests im Java Modul System Allgemeine Java-Themen 10
F Frage zu System.in Allgemeine Java-Themen 3
E System property setzten Allgemeine Java-Themen 8
Kirby.exe Movement System für Spiel Allgemeine Java-Themen 13
O Beziehung System.exit(x) <>Errorlevel Allgemeine Java-Themen 2
B System.out Ausgabe auf jtextarea Fehlersuche Allgemeine Java-Themen 8
F System Tray Menubutton ActionListener Allgemeine Java-Themen 5
H Im Tiled-Map-System ein Item anklicken Allgemeine Java-Themen 0
S Java Plugin System (ohne OSGI) Allgemeine Java-Themen 10
D System.arraycopy verhält sich seltsam Allgemeine Java-Themen 1
C Login System Allgemeine Java-Themen 19
A BufferedReader ohne System.in Allgemeine Java-Themen 9
VfL_Freak JDK installieren System-Property "user.dir" Allgemeine Java-Themen 6
J System.arraycopy ergibt anderes Resultat als for-loop Allgemeine Java-Themen 4
F Wie kann ich auf einem System prüfen, ob eine lib verfügbar ist? Allgemeine Java-Themen 2
D Methoden Java Applikation Die System Auslastung optimieren ? Allgemeine Java-Themen 7
S Ist Java ein geschlossenes System? Allgemeine Java-Themen 2
L Erste Schritte Suche Java Wiki System? Allgemeine Java-Themen 5
chuxXo System/JLayer Volume ändern Allgemeine Java-Themen 0
Neumi5694 System.out und System.err umleiten - NICHT im Quelltext Allgemeine Java-Themen 4
X System.out/err(Die Console) in JTextArea ausgeben Allgemeine Java-Themen 2
S Best Practice System.arrayCopy verändert Ziel-Array Allgemeine Java-Themen 2
A Methoden Der Sinn von system.out.print(); Allgemeine Java-Themen 9
A System freezes when trying to run external command from Java with wait for Allgemeine Java-Themen 3
A Java | Login-System Allgemeine Java-Themen 3
C System.out.print("") Compiler Fehler Allgemeine Java-Themen 2
Joew0815 Best Practice Wie am besten Plugin-System erstellen? Allgemeine Java-Themen 12
C System.in erhält Input von Tastatur. wo wird das festgelegt? Allgemeine Java-Themen 4
F Benachrichtigungs-System Webapp Java Servlet Allgemeine Java-Themen 10
M collection persistence system Allgemeine Java-Themen 4
D System.out's in String speichern. Allgemeine Java-Themen 2
H Interpreter-Fehler ArrayIndexOutOfBoundsException bei System.arraycopy() Allgemeine Java-Themen 3
M System herausfinden Allgemeine Java-Themen 6
O Variablen System.getenv: Sinnlose Werte, Arrays?! Allgemeine Java-Themen 6
G java.exe in System 32. Hilfe!!! Allgemeine Java-Themen 8
R Methoden Tag System Problem Allgemeine Java-Themen 3
J System.out im GUI anzeigen Allgemeine Java-Themen 3
N System.exit(0/1) Allgemeine Java-Themen 3
D System.LoadLibrary(..) - Programm stürzt ab Allgemeine Java-Themen 2
U Classpath DLLs mittels System.load() laden: Allgemeine Java-Themen 6
G Input/Output System.in "umbiegen" für junit-Test Allgemeine Java-Themen 4
Kr0e User management system Allgemeine Java-Themen 2
S Java Programm -System Neustart überleben? Allgemeine Java-Themen 3
Rudolf Wann System.exit und wann dispose? Allgemeine Java-Themen 9
ruutaiokwu System.out auf files umlenken in log4j.xml Allgemeine Java-Themen 4
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
agent47 Plugin System Verständnisfrage Allgemeine Java-Themen 6
M Wie externe System-Ressourcen zwangsweise freigeben Allgemeine Java-Themen 2
E Durch System.in.read() blockierten Thread stoppen Allgemeine Java-Themen 10
P System.out im Eclipse plugin Allgemeine Java-Themen 4
C File System Watcher Allgemeine Java-Themen 2
S Verhalten von System.getenv() in Ubuntu / Linux Allgemeine Java-Themen 12
A Problem mit System.getProperty(...) Allgemeine Java-Themen 5
D System.loadlibrary funktioniert nicht Allgemeine Java-Themen 6
H Event ähnliches System Allgemeine Java-Themen 20
Dissi Gammawerte des Grafiktreibers / System ändern? Allgemeine Java-Themen 3
M Plugin-System Allgemeine Java-Themen 4
A NullPointer bei System.getProperty("file.seperator") Allgemeine Java-Themen 4
R System.out oder System.err? Allgemeine Java-Themen 10
M Wie kann ich alle System.out Strings in ein log window umleiten? Allgemeine Java-Themen 6
K System.exec() Programm mit mehreren Parametern Allgemeine Java-Themen 8
G unerklärliches System.out Allgemeine Java-Themen 3
M System.setProperty("javax.net.ssl.trustStore", "mykey.pkx"); Allgemeine Java-Themen 1
T System Preferences + LInux (Ubuntu) Allgemeine Java-Themen 8
G OutputStream to System.out Allgemeine Java-Themen 35
J Wo werden die System properties gespeichert Allgemeine Java-Themen 12
C JSR295 in Produktiven System zu empfehlen? Allgemeine Java-Themen 3
B System CPU Zeit / Last auslesen Allgemeine Java-Themen 2
G Bringt es etwas System.gc() nach großen Aufgaben aufzurufen? Allgemeine Java-Themen 2
T Feststellen ob System-Konsole verfügbar Allgemeine Java-Themen 2
L remote debugging of a multi threaded system Allgemeine Java-Themen 2
F Probleme mit eigenem Plugin-System Allgemeine Java-Themen 3
L System.exit Allgemeine Java-Themen 3
G System.out und String machen was anderes Allgemeine Java-Themen 5
G System.out im window h.inein bringen? Allgemeine Java-Themen 8
A System.in pipen Allgemeine Java-Themen 3
P System.getProperty zu Classloader Allgemeine Java-Themen 21
I Am System angemeldeten Benutzer abfragen Allgemeine Java-Themen 11
E System.out umleiten Allgemeine Java-Themen 2
S system.out und system.err einer Methode in Datei schreiben. Allgemeine Java-Themen 7
S System Informationen auslesen. Allgemeine Java-Themen 3
N Thread und System.out.print() Allgemeine Java-Themen 2
K Kann man System.out in eine Datei speichern? ähnlich wie log Allgemeine Java-Themen 7
B Native DLL zweimal laden: System.load(sPath); Allgemeine Java-Themen 5
P System.getProperty("user.dir") Allgemeine Java-Themen 10
K Abfrage ob JRE oder JDK auf System installiert ist. Allgemeine Java-Themen 12
B serlvet system.out ausgabe Allgemeine Java-Themen 4
N Plugin-System: Klassen über String laden Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben