package ch.qos.logback.reflect; import org.apache.commons.jexl.Expression; import org.apache.commons.jexl.ExpressionFactory; import org.apache.commons.jexl.JexlContext; import org.apache.commons.jexl.JexlHelper; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.spi.LoggingEvent; public class JEXLTest { /** * @param args */ public static void main(String[] args) throws Exception { LoggerContext lc = new LoggerContext(); Logger logger = lc.getLogger(JaninoTest.class); LoggingEvent loggingEvent = new LoggingEvent("toto", logger, Level.INFO, "hi", null); // Create an expression object String jexlExp = "e.message == 'hix'"; Expression e = ExpressionFactory.createExpression(jexlExp); // Create a context and add data JexlContext jc = JexlHelper.createContext(); jc.getVars().put("e", loggingEvent); // Now evaluate the expression, getting the result Object o = e.evaluate(jc); System.out.println("==" + o); //loop(e, jc); findClassLoop("java.lang.Exception", "java.net.UnknownHostException"); } static void loop(Expression e, JexlContext jc) throws Exception { final long start = System.nanoTime(); final long LEN = 1000 * 1000; for (int i = 0; i < LEN; i++) { e.evaluate(jc); } final long end = System.nanoTime(); System.out.println("JEXL avg: " + (end - start) / LEN + " nanos"); } static void findClassLoop(String superClassStr, String childClassStr) throws ClassNotFoundException { final long start = System.nanoTime(); final long LEN = 1000 * 1000; Class superClass = Class.forName(superClassStr); for (int i = 0; i < LEN; i++) { Class childClass = Class.forName(childClassStr); superClass.isAssignableFrom(childClass); } final long end = System.nanoTime(); System.out.println("FIND CLA avg: " + (end - start) / LEN + " nanos"); } }