GrabBag/VrUtils/log4cpp/include/log4cpp/StringQueueAppender.hh
2025-07-23 01:35:14 +08:00

73 lines
2.0 KiB
C++

/*
* StringQueueAppender.hh
*
* Copyright 2000, LifeLine Networks BV (www.lifeline.nl). All rights reserved.
* Copyright 2000, Bastiaan Bakker. All rights reserved.
*
* See the COPYING file for the terms of usage and distribution.
*/
#ifndef _LOG4CPP_STRINGQUEUEAPPENDER_HH
#define _LOG4CPP_STRINGQUEUEAPPENDER_HH
#include <log4cpp/Portability.hh>
#include <string>
#include <queue>
#include <log4cpp/LayoutAppender.hh>
namespace log4cpp {
/**
* This class puts log messages in an in-memory queue. Its primary use
* is in test cases, but it may be useful elsewhere as well.
*
* @since 0.2.4
**/
class LOG4CPP_EXPORT StringQueueAppender : public LayoutAppender {
public:
StringQueueAppender(const std::string& name);
virtual ~StringQueueAppender();
virtual bool reopen();
virtual void close();
/**
* Return the current size of the message queue.
* Shorthand for getQueue().size().
* @returns the queue size
**/
virtual size_t queueSize() const;
/**
* Return the queue to which the Appends adds messages.
* @returns the message queue
**/
virtual std::queue<std::string>& getQueue();
/**
* Return the queue to which the Appends adds messages.
* @returns the message queue
**/
virtual const std::queue<std::string>& getQueue() const;
/**
* Pop the oldest log message from the front of the queue.
* @returns the oldest log message
**/
virtual std::string popMessage();
protected:
/**
* Appends the LoggingEvent to the queue.
* @param event the LoggingEvent to layout and append to the queue.
**/
virtual void _append(const LoggingEvent& event);
std::queue<std::string> _queue;
};
}
#endif // _LOG4CPP_STRINGQUEUEAPPENDER_HH