如何使用consolePatternMatchListeners捕获eclipse控制台输出?

时间:2017-02-01 12:31:07

标签: java eclipse plugins console

我正在编写一个应该捕获eclipse控制台输出的插件。我的plugin.xml包含

<extension
     point="org.eclipse.ui.console.consolePatternMatchListeners">
  <consolePatternMatchListener
        class="eventhandling.PatternMatcher"
        id="eventhandling.PatternMatcher"
        regex=".*">
        <enablement>
        <test property="org.eclipse.ui.console.consoleTypeTest" value="exampleConsole"/>
     </enablement>
  </consolePatternMatchListener> 

然而,我的PatternMatcher(如下所示)未被调用。我想知道如何创建从eclipse控制台捕获所有内容的工作代码。

import org.eclipse.ui.console.*;;
public class PatternMatcher implements IPatternMatchListener {

    @Override
    public void connect(TextConsole console) {
        // TODO Auto-generated method stub
        System.out.println("testing");

    }

    @Override
    public void disconnect() {
        // TODO Auto-generated method stub
        System.out.println("testing");

    }

    @Override
    public void matchFound(PatternMatchEvent event) {
        // TODO Auto-generated method stub
        System.out.println("testing");
    }

    @Override
    public String getPattern() {
        // TODO Auto-generated method stub
        System.out.println("testing");
        return "*";
    }

    @Override
    public int getCompilerFlags() {
        // TODO Auto-generated method stub
        System.out.println("testing");
        return 0;
    }

    @Override
    public String getLineQualifier() {
        // TODO Auto-generated method stub
        System.out.println("testing");
        return null;
    }

}

1 个答案:

答案 0 :(得分:0)

您没有说出要匹配的控制台类型,但这里是实际的Java Stack Trace控制台模式匹配器,显示了一些更常用的启用值:

<consolePatternMatchListener
      class="org.eclipse.jdt.internal.debug.ui.console.JavaConsoleTracker"
      regex="\(\w*${java_extensions_regex}\S*\)"
      qualifier="${java_extensions_regex}"
      id="org.eclipse.jdt.debug.ui.JavaConsoleTracker">
   <enablement>
      <or>
        <test property="org.eclipse.ui.console.consoleTypeTest" value="javaStackTraceConsole"/>
        <test property="org.eclipse.debug.ui.processTypeTest" value="java"/>
        <test property="org.eclipse.debug.ui.processTypeTest" value="org.eclipse.ant.ui.antProcess"/>
      </or>
   </enablement>
</consolePatternMatchListener>

我相信这与Java堆栈跟踪控制台以及Java和Ant程序的进程输出控制台相匹配。