libmoost
|
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