2009-12-23 6 views
0

로그 수준과 로그 메시지에 나타나는 텍스트를 기반으로 로그 메시지를 필터링해야합니다. 이러한 메시지는 다음과 같은 형식에 있습니다로그 메시지 필터링을위한 RegExp

 
    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 

나는 이미 아래 코드 2 정규 표현식 (텍스트의 수준에 대해 하나 하나)을 생성하지만 난 하나에 이러한 결합 수 있는지 궁금합니다. 몇 가지 조합을 시도했지만 내 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; 
} 

답변

2

(구문이 ;-) 올바른지 때문에 완전히 확실하지 전에 플렉스와 함께 일한 적이) 트릭을 할해야

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; 
} 
+0

큰 물건을 다음! 그리고 그것은 매우 단순 해 보입니다 ;-) Merci Folke. –