00001 // Module: LOG4CPLUS 00002 // File: socketappender.h 00003 // Created: 5/2003 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_SOCKET_APPENDER_HEADER_ 00017 #define _LOG4CPLUS_SOCKET_APPENDER_HEADER_ 00018 00019 #include <log4cplus/config.h> 00020 #include <log4cplus/appender.h> 00021 #include <log4cplus/helpers/socket.h> 00022 00023 #ifndef UNICODE 00024 # define LOG4CPLUS_MAX_MESSAGE_SIZE (8*1024) 00025 #else 00026 # define LOG4CPLUS_MAX_MESSAGE_SIZE (2*8*1024) 00027 #endif 00028 00029 00030 namespace log4cplus { 00031 00068 class LOG4CPLUS_EXPORT SocketAppender : public Appender { 00069 public: 00070 // Ctors 00071 SocketAppender(const log4cplus::tstring& host, int port, 00072 const log4cplus::tstring& serverName = tstring()); 00073 SocketAppender(const log4cplus::helpers::Properties properties); 00074 00075 // Dtor 00076 ~SocketAppender(); 00077 00078 // Methods 00079 virtual void close(); 00080 00081 protected: 00082 void openSocket(); 00083 virtual void append(const spi::InternalLoggingEvent& event); 00084 00085 // Data 00086 log4cplus::helpers::Socket socket; 00087 log4cplus::tstring host; 00088 int port; 00089 log4cplus::tstring serverName; 00090 00091 private: 00092 // Disallow copying of instances of this class 00093 SocketAppender(const SocketAppender&); 00094 SocketAppender& operator=(const SocketAppender&); 00095 }; 00096 00097 namespace helpers { 00098 LOG4CPLUS_EXPORT 00099 SocketBuffer convertToBuffer(const log4cplus::spi::InternalLoggingEvent& event, 00100 const log4cplus::tstring& serverName); 00101 00102 LOG4CPLUS_EXPORT 00103 log4cplus::spi::InternalLoggingEvent readFromBuffer(SocketBuffer& buffer); 00104 } // end namespace helpers 00105 00106 } // end namespace log4cplus 00107 00108 #endif // _LOG4CPLUS_SOCKET_APPENDER_HEADER_ 00109