代码之家  ›  专栏  ›  技术社区  ›  Christophe Herreman

用于筛选日志消息的RegExp

  •  0
  • Christophe Herreman  · 技术社区  · 15 年前

        12/23/2009 17:33:26.379 [INFO] TMSNG.Main Channelset configured with url [http://172.16.34.4:8080/tms-flux/messagebroker/streamingamf]
        12/23/2009 17:33:26.380 [DEBUG] org.springextensions.actionscript.core.command.CompositeCommand Executing composite command '[object CompositeCommand]' in sequence
    

    我已经有下面的代码创建了两个正则表达式(一个用于级别,一个用于文本),但我想知道如何将它们组合成一个。我尝试了几种组合,但由于我的regexp技能不存在,所以我无法实现这一点。

    有什么提示吗?


    代码:

    private function filterLogMessage(item:Object):Boolean {
      var logMessage:String = String(item);
      var levelFilter:String = getLevelFilter();
      var levelRegExp:RegExp = new RegExp(levelFilter, "");
      var textFilter:String = StringUtils.trim(filterTextInput.text);
      var textRegExp:RegExp = new RegExp(textFilter, "");
      var match:Boolean = (levelRegExp.test(logMessage) && textRegExp.test(logMessage));
      return match;
    }
    
    private function getLevelFilter():String {
      var result:String = "";
      var selectedLevel:String = levelComboBox.selectedLabel;
    
      switch (selectedLevel) {
        case "DEBUG":
          //result = "\\[(DEBUG|INFO|WARN|ERROR|FATAL)\\]";
          break;
        case "INFO":
          result = "\\[(INFO|WARN|ERROR|FATAL)\\]";
          break;
        case "WARN":
          result = "\\[(WARN|ERROR|FATAL)\\]";
          break;
        case "ERROR":
          result = "\\[(ERROR|FATAL)\\]";
          break;
        case "FATAL":
          result = "\\[(FATAL)\\]";
          break;
        }
    
      return result;
    }
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   Folke    15 年前

    下面应该可以做到这一点(以前从未使用过flex,所以不能完全确定语法是否正确;-)

    private function filterLogMessage(item:Object):Boolean {
        var logMessage:String = String(item);
        var levelFilter:String = getLevelFilter();
        var textFilter:String = StringUtils.trim(filterTextInput.text);
        var filterRegExp:RegExp = new RegExp(levelFilter + ".*" + textFilter, "");
        var match:Boolean = (filterRegExp.test(logMessage));
        return match;
    }