Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

appender.h

Go to the documentation of this file.
00001 // Module:  Log4CPLUS
00002 // File:    appender.h
00003 // Created: 6/2001
00004 // Author:  Tad E. Smith
00005 //
00006 //
00007 // Copyright (C) Tad E. Smith  All rights reserved.
00008 //
00009 // This software is published under the terms of the Apache Software
00010 // License version 1.1, a copy of which has been included with this
00011 // distribution in the LICENSE.APL file.
00012 //
00013 
00016 #ifndef _LOG4CPLUS_APPENDER_HEADER_
00017 #define _LOG4CPLUS_APPENDER_HEADER_
00018 
00019 #include <log4cplus/config.h>
00020 #include <log4cplus/layout.h>
00021 #include <log4cplus/loglevel.h>
00022 #include <log4cplus/tstring.h>
00023 #include <log4cplus/helpers/logloguser.h>
00024 #include <log4cplus/helpers/pointer.h>
00025 #include <log4cplus/helpers/property.h>
00026 #include <log4cplus/spi/filter.h>
00027 
00028 #include <memory>
00029 
00030 
00031 namespace log4cplus {
00032 
00037     class LOG4CPLUS_EXPORT ErrorHandler {
00038     public:
00039         virtual ~ErrorHandler();
00040         virtual void error(const log4cplus::tstring& err) = 0;
00041     };
00042 
00043 
00044 
00045     class LOG4CPLUS_EXPORT OnlyOnceErrorHandler : public ErrorHandler,
00046                                                   protected log4cplus::helpers::LogLogUser
00047     {
00048     public:
00049       // Ctor
00050         OnlyOnceErrorHandler() : firstTime(true){}
00051 
00052         virtual void error(const log4cplus::tstring& err);
00053 
00054     private:
00055         bool firstTime;
00056     };
00057 
00058 
00063     class LOG4CPLUS_EXPORT Appender : public log4cplus::helpers::SharedObject,
00064                                       protected log4cplus::helpers::LogLogUser
00065 
00066     {
00067     public:
00068       // Ctor
00069         Appender();
00070         Appender(const log4cplus::helpers::Properties properties);
00071 
00072       // Dtor
00073         virtual ~Appender(){};
00074 
00075         void destructorImpl();
00076 
00077       // Methods
00084         virtual void close() = 0;
00085 
00091         void doAppend(const log4cplus::spi::InternalLoggingEvent& event);
00092 
00097         virtual log4cplus::tstring getName();
00098 
00103         virtual void setName(const log4cplus::tstring& name);
00104 
00108         virtual void setErrorHandler(std::auto_ptr<ErrorHandler> eh);
00109 
00114         virtual ErrorHandler* getErrorHandler();
00115 
00121         virtual void setLayout(std::auto_ptr<Layout> layout);
00122 
00128         virtual Layout* getLayout();
00129 
00133         void setFilter(log4cplus::spi::FilterPtr f) { filter = f; }
00134 
00138         log4cplus::spi::FilterPtr getFilter() const { return filter; }
00139 
00144         LogLevel getThreshold() const { return threshold; }
00145 
00154         void setThreshold(LogLevel th) { threshold = th; }
00155 
00161         bool isAsSevereAsThreshold(LogLevel ll) const {
00162             return ((ll != NOT_SET_LOG_LEVEL) && (ll >= threshold));
00163         }
00164 
00165     protected:
00166       // Methods
00172         virtual void append(const log4cplus::spi::InternalLoggingEvent& event) = 0;
00173 
00174       // Data
00177         std::auto_ptr<Layout> layout;
00178 
00180         log4cplus::tstring name;
00181 
00183         LogLevel threshold;
00184 
00187         log4cplus::spi::FilterPtr filter;
00188 
00190         std::auto_ptr<ErrorHandler> errorHandler;
00191 
00193         bool closed;
00194     };
00195 
00197     typedef helpers::SharedObjectPtr<Appender> SharedAppenderPtr;
00198 
00199 } // end namespace log4cplus
00200 
00201 #endif // _LOG4CPLUS_APPENDER_HEADER_
00202 

Generated on Mon Feb 9 09:10:30 2004 for log4cplus by doxygen 1.3.2