77 lines
1.6 KiB
C++

/*
* IdsaAppender.hh
*
* Copyright 2000, Marc Welz
*
* See the COPYING file for the terms of usage and distribution.
*/
#ifndef _LOG4CPP_IDSAAPPENDER_HH
#define _LOG4CPP_IDSAAPPENDER_HH
#include <log4cpp/Portability.hh>
#include <string>
#include <stdarg.h>
#include <idsa.h>
#include <log4cpp/AppenderSkeleton.hh>
LOG4CPP_NS_BEGIN
/**
* IdsaAppender is an Appender that sends LoggingEvents to the IDS/A
* logger and reference monitor by Marc Welz.
* See http://jade.cs.uct.ac.za/idsa/ for more information on IDS/A.
**/
class IdsaAppender : public AppenderSkeleton {
public:
/**
* Instantiate an IdsaAppender with given name and name.
* Unlike the syslog API, idsa allows multiple connections.
* @param name The name of the Appender
* @param idsaName The service parameter of idsa
**/
IdsaAppender(const std::string& name, const std::string& idsaName);
virtual ~IdsaAppender();
/**
* Calls idsa_open() and idsa_close()
**/
virtual bool reopen();
/**
* Calls idsa_close()
**/
virtual void close();
/**
* The IdsaAppender does its own Layout.
* @returns false
**/
virtual bool requiresLayout() const;
virtual void setLayout(Layout* layout);
protected:
/**
* Calls idsa_open().
**/
virtual void open();
/**
* Sends a LoggingEvent to idsa.
* @param event the LoggingEvent to log.
**/
virtual void _append(const LoggingEvent& event);
const std::string _idsaName;
IDSA_CONNECTION *_idsaConnection;
};
LOG4CPP_NS_END
#endif // _LOG4CPP_IDSAAPPENDER_HH