private void createMemoryLog(Log log) { if (log != null) { // Create memory log listener. mLogEvents = Collections.synchronizedList(new LinkedList<LogEvent>()); // The maximum number of log events to store in memory. final int logEventsMax = mProperties.getInt("log.max", 100); log.addRootLogListener( new TeaLogListener() { public void logMessage(LogEvent e) { checkSize(); mLogEvents.add(e); } public void logException(LogEvent e) { checkSize(); mLogEvents.add(e); } public void logTeaStackTrace(TeaLogEvent e) { checkSize(); mLogEvents.add(e); } private void checkSize() { while (mLogEvents.size() >= logEventsMax) { mLogEvents.remove(0); } } }); logVersionInfo(TeaServlet.class, "TeaServlet", log); log.info("Copyright (C) 1999-2012 TeaTrove http://teatrove.org"); logVersionInfo(TemplateLoader.class, "Tea", log); log.info("Copyright (C) 1997-2012 TeaTrove http://teatrove.org"); } }