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}