Hi Anton,

You need to read a LoggingEvent and then access the message, timestamp, etc
using the methods provided...

The code below implements a working client.

Regards, Paul

Consulting Engineer
RUBIX Information Technologies, Inc.
www.rubixinfotech.com

#include <iomanip>
#include <iostream>
#include <log4cxx/spi/loggingevent.h>
#include <log4cxx/helpers/socket.h>
#include <log4cxx/helpers/dateformat.h>
#include <log4cxx/helpers/inetaddress.h>

using namespace std;
using namespace log4cxx::spi;
using namespace log4cxx::helpers;

Socket *s;
extern "C" void signalHandler(int sig)
{
        if ((sig == SIGTERM) || (sig == SIGINT) || (sig == SIGPIPE))
        {
                s->close();
                exit(0);
        }
}

int main (int argc, char *argv[])
{

    if (argc != 3)
        {
                printf("SocketClient hostname port\n");
                return(1);
        }

        char *host = argv[1];
        int port = atoi(argv[2]);

        try 
        {
                InetAddress address = InetAddress::getByName(host);
                s = new Socket(address, port);
                SocketInputStreamPtr istrm = s->getInputStream();
                DateFormat dateFormat("%Y-%m-%d %H:%M:%S,%Q");
                LoggingEvent event;
                while (true)
                {
                        event.read(istrm);
                        cout << dateFormat.format(event.getTimeStamp()) << " " \
                                << event.getLevel()->toString() << " " \
                                << event.getMessage() << endl;
                }
        }
        catch (SocketException &ex)
        {
                cerr << ex.getMessage() << endl;
        }
        catch (...)
        {
                cerr << "Unexpected exception" << endl;
        }

        return(0);
}

Reply via email to