Eclipse(查找和替换):Make< System.out.println(“x”)>到< Logger.log(“x”,Level.Info)>

时间:2011-10-26 11:54:43

标签: eclipse

我有一个庞大的旧软件项目,我希望自己集成。为此,我想替换所有

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)

我想用一个命令来做它。

3 个答案:

答案 0 :(得分:2)

Eclipse支持多文件搜索和替换方法。预览:

  1. 主菜单 - >搜索 - >文件...
  2. 输入以下内容作为“包含文本”:System.out.println((“[^”] *“))
  3. 检查正则表达式复选框
  4. 选择范围(工作区,工程等)
  5. 点击替换......
  6. 当被要求输入以下内容作为“With”时:Logger.log(\ 1,Level.Info)
  7. 选中正则表达式复选框
  8. 点击预览...并检查所有更改(请参阅下面的警告)
  9. 点击确定接受更改
  10. 这是一个非常简单的方法,使用表达式“[^”] “来恰好匹配两个引号和之间的所有内容。如果程序中的文本更复杂,则必须相应地调整此方法,例如以下使用“[^”]

    无效
    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));