# 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