J'ai besoin de filtrer les messages de journal en fonction du niveau de consignation et d'un texte apparaissant dans le message du journal. Ces messages sont sous la forme suivante:RegExp pour le filtrage des messages de journal
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
J'ai déjà le code ci-dessous qui crée 2 expressions régulières (un pour le niveau et l'autre pour le texte), mais je me demandais comment je pouvais combiner en un. J'ai essayé plusieurs combinaisons, mais comme mes compétences d'expression rationnelle n'existent pas, je n'arrivais pas à faire fonctionner ça.
Des indices?
code:
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;
}
Great stuff! Et ça a l'air si simple ;-) Merci Folke. –