2016-06-28 4 views
-1

Ich muss das Protokollierungsdesign in meiner Anwendung ändern. Derzeit verwendet meine Anwendung eine Dienstprogrammklasse für alle Fehler, Informationen und Debug-Anweisungen. Ich muss das ändern. Zum Beispiel muss ich Kann ich es jedes Werkzeug tun alle Vorkommen vonSuchen und Ersetzen in Java-Dateien

Log.send("XXX", Log.DEBUG); 

zu

logger.debug("XXX"); 

und

Log.send("XXX", Log.INFO); 

zu

logger.info("XXX"); or 

zu ändern oder zu verwenden regulärer Ausdruck in Editoren wie Notepa d ++ oder Textpad?

+4

Ihre IDE sollte dies tun können. Was benutzt du? Finsternis? Netbeans? IDEE? Andere...? –

+0

Ich möchte verstehen Warum schreibst du lieber Logger? Info oder Logger. debug in static function Log. senden basierend auf verschiedenen Werten von Log. INFO oder Protokoll. DEBUG –

Antwort

1

Mit einem regulären Ausdruck suchen und finden (ich Atom Stil verwenden):

FIND: Log.send\((\"\w+\"), Log.DEBUG\);

REPLACE: logger.debug($1)

FIND: Log.send\((\"\w+\"), Log.INFO\);

REPLACE: logger.info($1)

0

In Notepad ++ können Sie Regex wie folgt verwenden

logger.debug

Suche:

Log\.send\("([^"]+)", Log\.DEBUG\); 

ersetzen:

logger\.debug\("\1"\); 

logger.info

Suche:

Log\.send\("([^"]+)", Log\.INFO\); 

ersetzen:

logger\.info\("\1"\); 

Getestet habe ich diese in Eclipse und es funktioniert. Ersetzen Sie für Netbeans einfach \1 durch $1. Wenn Sie faul sein wollen und eine nur regex verwenden finden und Ersetzen Spiel für die beiden, dann können Sie diese verwenden:

Suche:

Log\.send\("([^"]+)", Log\.([^\)]+)\); 

ersetzen

logger\.\L\2\E\("\1"\); 

Der Unterschied dabei ist, dass ich auch DEBUG und INFO erfassen und sie dann als Methodennamen für die logger verwenden. Die Schlüsselwörter sind jedoch in Großbuchstaben, also setze ich sie zuerst in Kleinbuchstaben (daher die \L und \E bis cut off the lower case.

+0

Vielen Dank Keale es funktioniert – user3669515

+0

@ user3669515 kein Problem. Wenn dies Ihre Frage beantwortet, akzeptieren Sie es bitte, indem Sie auf das grüne Häkchen klicken, damit wir diese Frage schließen können. Cheers ~ – Keale

+0

HI Keale, Vielen Dank für Ihre frühere Hilfe. Kannst du bitte im regulären Ausdruck für den unteren Log.send helfen ("XXX" + xyz, Log.DEBUG); bis logger.debug ("XXX" + xyz); – user3669515

0

Wenn Sie Zugriff auf vi auf Cygwin (Windows) oder Shell (OS X oder Linux) haben, oder sogar andere Linux-Befehle sollten dies sehr einfach machen. Es ist eine andere Art, dies zu tun. Außerdem müssen Sie nicht jede Datei öffnen, wenn Sie es richtig machen, sollte es einen Befehl für den gesamten Projektquellcode in der Shell geben.

Beispiel: Der Code unten sucht Test Suchbegriff für alle Dateien im aktuellen Verzeichnis (rekursiv) und ersetzt sie durch ‚ReplaceText‘

grep -r -l 'test' . | sort | uniq | xargs perl -e "s/test/replacetext/" -pi