001/**
002 *
003 * Copyright (c) 2014, the Railo Company Ltd. All rights reserved.
004 *
005 * This library is free software; you can redistribute it and/or
006 * modify it under the terms of the GNU Lesser General Public
007 * License as published by the Free Software Foundation; either 
008 * version 2.1 of the License, or (at your option) any later version.
009 * 
010 * This library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013 * Lesser General Public License for more details.
014 * 
015 * You should have received a copy of the GNU Lesser General Public 
016 * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
017 * 
018 **/
019package lucee.commons.io.log.log4j.appender;
020
021import lucee.commons.io.log.log4j.appender.task.Task;
022import lucee.runtime.config.Config;
023import lucee.runtime.spooler.SpoolerEngine;
024
025import org.apache.log4j.Appender;
026import org.apache.log4j.Layout;
027import org.apache.log4j.spi.ErrorHandler;
028import org.apache.log4j.spi.Filter;
029import org.apache.log4j.spi.LoggingEvent;
030
031public class TaskAppender implements Appender,AppenderState {
032        
033        private Appender appender;
034        private SpoolerEngine spoolerEngine;
035        private boolean closed;
036
037        public TaskAppender(Config config,Appender appender){
038                if(appender instanceof AppenderState)
039                        closed=((AppenderState)appender).isClosed();
040                this.appender=appender;
041                spoolerEngine = config.getSpoolerEngine();
042                
043        }
044
045        @Override
046        public void doAppend(LoggingEvent le) {
047                spoolerEngine.add(new Task(appender,le));
048        }
049
050        @Override
051        public void addFilter(Filter arg0) {
052                appender.addFilter(arg0);
053        }
054
055        @Override
056        public void clearFilters() {
057                appender.clearFilters();
058        }
059
060        @Override
061        public void close() {
062                closed=true;
063                appender.close();
064        }
065
066        @Override
067        public ErrorHandler getErrorHandler() {
068                return appender.getErrorHandler();
069        }
070
071        @Override
072        public Filter getFilter() {
073                return appender.getFilter();
074        }
075
076        @Override
077        public Layout getLayout() {
078                return appender.getLayout();
079        }
080
081        @Override
082        public String getName() {
083                return appender.getName();
084        }
085
086        @Override
087        public boolean requiresLayout() {
088                return appender.requiresLayout();
089        }
090
091        @Override
092        public void setErrorHandler(ErrorHandler arg0) {
093                appender.setErrorHandler(arg0);
094        }
095
096        @Override
097        public void setLayout(Layout arg0) {
098                appender.setLayout(arg0);
099        }
100
101        @Override
102        public void setName(String arg0) {
103                appender.setName(arg0);
104        }
105
106        @Override
107        public boolean isClosed() {
108                return closed;
109        }
110}