libmoost
/home/mhx/git/github/libmoost/include/moost/logging/nsca_appender.hpp
Go to the documentation of this file.
00001 /* vim:set ts=3 sw=3 sts=3 et: */
00035 #ifndef MOOST_LOGGING_NSCA_APPENDER_HPP__
00036 #define MOOST_LOGGING_NSCA_APPENDER_HPP__
00037 
00038 #include <string>
00039 
00040 #include <boost/shared_ptr.hpp>
00041 
00042 #include <log4cxx/appenderskeleton.h>
00043 #include <log4cxx/patternlayout.h>
00044 
00045 #include "../nagios/detail/nsca_config.hpp"
00046 
00047 namespace moost {
00048    namespace nagios {
00049       class nsca_client;
00050    }
00051 
00052    namespace logging {
00053       class pseudo_ostream;
00054    }
00055 
00056 }
00057 
00066 namespace log4cxx
00067 {
00068    namespace helpers {
00069       class Pool;
00070    }
00071 
00075    class NscaAppender : public AppenderSkeleton
00076    {
00077    public:
00078       DECLARE_LOG4CXX_OBJECT(NscaAppender)
00079       BEGIN_LOG4CXX_CAST_MAP()
00080          LOG4CXX_CAST_ENTRY(NscaAppender)
00081          LOG4CXX_CAST_ENTRY_CHAIN(AppenderSkeleton)
00082       END_LOG4CXX_CAST_MAP()
00083 
00084       NscaAppender();
00085 
00092       NscaAppender(
00093          std::string const & this_host,
00094          moost::nagios::nsca_config const & cfg
00095          );
00096 
00103       NscaAppender(
00104          std::string const & this_host,
00105          std::string const & nsca_svr_host
00106          );
00107 
00115       NscaAppender(
00116          std::string const & this_host,
00117          std::string const & this_host_desc,
00118          moost::nagios::nsca_config const & cfg
00119          );
00120 
00128       NscaAppender(
00129          std::string const & this_host,
00130          std::string const & this_host_desc,
00131          std::string const & nsca_svr_host
00132          );
00133 
00139       NscaAppender(LayoutPtr & layout);
00140 
00148       NscaAppender(
00149          LayoutPtr & layout,
00150          std::string const & this_host,
00151          moost::nagios::nsca_config const & cfg
00152          );
00153 
00161       NscaAppender(
00162          LayoutPtr & layout,
00163          std::string const & this_host,
00164          std::string const & nsca_svr_host
00165          );
00166 
00175       NscaAppender(
00176          LayoutPtr & layout,
00177          std::string const & this_host,
00178          std::string const & this_host_desc,
00179          moost::nagios::nsca_config const & cfg
00180          );
00181 
00190       NscaAppender(
00191          LayoutPtr & layout,
00192          std::string const & this_host,
00193          std::string const & this_host_desc,
00194          std::string const & nsca_svr_host
00195          );
00196 
00202       void setNscaHost(std::string const & host);
00203 
00209       void setNscaPort(std::string const & port);
00210 
00216       void setRecvTimeoutMs(boost::uint16_t timeout);
00217 
00223       void setSendTimeoutMs(boost::uint16_t timeout);
00224 
00230       void setEncType(std::string const & enctype);
00231 
00237       void setEncPass(std::string const & encpass);
00238 
00244       void setThisHost(std::string const & host);
00245 
00251       void setThisHostDesc(std::string const & desc);
00252 
00262       void setOption(const LogString& option, const LogString& value);
00263 
00272       bool requiresLayout() const;
00273 
00284       void activateOptions();
00285 
00294       void activateOptions(log4cxx::helpers::Pool& p);
00295 
00302       void close();
00303 
00315       void append (
00316          spi::LoggingEventPtr const & event,
00317          helpers::Pool & p
00318          );
00319 
00320       static int get_level(int const level);
00321 
00322    private:
00323       std::string this_host_;
00324       std::string this_host_desc_;
00325       moost::nagios::nsca_config nsca_config_;
00326       boost::shared_ptr<moost::nagios::nsca_client> nsca_client_;
00327       moost::logging::pseudo_ostream & out_;
00328    };
00329 
00330    LOG4CXX_PTR_DEF(NscaAppender);
00331 }
00332 
00333 #endif