private List<LoggingEvent> getEvents() {
        List<LoggingEvent> copiedEvents;
        synchronized (this.events) {
            copiedEvents = new ArrayList<LoggingEvent>(this.events);
        }
        return copiedEvents;
    }
Custom daily rolling file appender for metaq,it keeps an bounded queue in
memory to hold latest logs.

@author dennis<killme2008@gmail.com>
metamorphosis-commons/src/main/java/com/taobao/metamorphosis/utils/log/MetaqDailyRollingFileAppender.java