00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
#ifndef _LOG4CPP_NDC_HH
00011
#define _LOG4CPP_NDC_HH
00012
00013
#include <log4cpp/Portability.hh>
00014
#include <string>
00015
#include <vector>
00016
00017
namespace log4cpp {
00069 class LOG4CPP_EXPORT NDC {
00070
public:
00071
00072 struct DiagnosticContext {
00073
DiagnosticContext(
const std::string& message);
00074
DiagnosticContext(
const std::string& message,
00075
const DiagnosticContext& parent);
00076
00077 std::string message;
00078 std::string fullMessage;
00079 };
00080
00081 typedef std::vector<DiagnosticContext> ContextStack;
00082
00091
static void clear();
00092
00106
static ContextStack* cloneStack();
00107
00112
static const std::string& get();
00113
00118
static int getDepth();
00119
00120
static void inherit(ContextStack* stack);
00121
00132
static std::string pop();
00133
00142
static void push(
const std::string& message);
00143
00150
static void setMaxDepth(
int maxDepth);
00151
00156
static NDC& getNDC();
00157
00158 NDC();
00159
virtual ~NDC();
00160
00161
public:
00162
virtual void _clear();
00163
virtual ContextStack* _cloneStack();
00164
virtual const std::string& _get() const;
00165 virtual
int _getDepth() const;
00166 virtual
void _inherit(ContextStack* stack);
00167 virtual std::string _pop();
00168 virtual
void _push(const std::string& message);
00169 virtual
void _setMaxDepth(
int maxDepth);
00170
00171 ContextStack _stack;
00172 };
00173 }
00174
00175 #endif