我有一个庞大的旧软件项目,我希望自己集成。为此,我想替换所有
System.out.println("x")
带
Logger.log("x", Level.Info)
如何使用Eclipse执行此操作?
编辑:
e.g:
System.out.println("x") --> Logger.log("x", Level.Info)
System.out.println("abc") --> Logger.log("abc", Level.Info)
System.out.println(myObject) --> Logger.log(myObject, Level.Info)
我想用一个命令来做它。
答案 0 :(得分:2)
Eclipse支持多文件搜索和替换方法。预览:
这是一个非常简单的方法,使用表达式“[^”] “来恰好匹配两个引号和之间的所有内容。如果程序中的文本更复杂,则必须相应地调整此方法,例如以下使用“[^”] “
无效System.out.println("x"+"y");
System.out.println("x"+2);
System.out.println("x:\"3\"");
请明智地使用它。
答案 1 :(得分:1)
所以基本上你想用System.out.println("random text here");
替换Logger.log("same random text here",Level.info);
。我不认为这在Eclipse中是可能的,但你可以做一个小的Java程序,它从你的项目中读取所有* .java文件,进行替换,然后重新输出它们,如:
public static void main(String args[]) {
String source = "System.out.println(\"text\");";
String sourcePrefix = "System.out.println(\"";
String sourceSuffix = "\");";
String targetPrefix = "Logger.log(\"";
String targetSuffix = "\",LogLevel.info);";
String replaced = source.replace(sourcePrefix, targetPrefix).replace(sourceSuffix, targetSuffix);
System.out.println(replaced);
}
答案 2 :(得分:0)
我希望像您建议的那样更换文本,但也可以使用以下内容完全重定向System.out:
Logger logger = Logger.getLogger("stdout");
LoggingOutputStream los = new LoggingOutputStream(logger, StdOutErrLevel.STDOUT);
System.setOut(new PrintStream(los, true));