log4cpp 1.1
Loading...
Searching...
No Matches
Appender.hh
Go to the documentation of this file.
1/*
2 * Appender.hh
3 *
4 * Copyright 2000, LifeLine Networks BV (www.lifeline.nl). All rights reserved.
5 * Copyright 2000, Bastiaan Bakker. All rights reserved.
6 *
7 * See the COPYING file for the terms of usage and distribution.
8 */
9
10#ifndef _LOG4CPP_APPENDER_HH
11#define _LOG4CPP_APPENDER_HH
12
14#include <string>
15#include <map>
16#include <set>
17#include <vector>
18#include <stdarg.h>
19#include <sys/types.h>
20#include <sys/stat.h>
21#include <fcntl.h>
22#include <log4cpp/Priority.hh>
23#include <log4cpp/Layout.hh>
26
27namespace log4cpp {
29
35 friend class Category;
36 public:
37
44 static Appender* getAppender(const std::string& name);
45
50 static bool reopenAll();
51
56 static void closeAll();
57
58 protected:
64 Appender(const std::string& name);
65
66 public:
70 virtual ~Appender();
71
76 virtual void doAppend(const LoggingEvent& event) = 0;
77
83 virtual bool reopen() = 0;
84
89 virtual void close() = 0;
90
96 virtual bool requiresLayout() const = 0;
97
102 virtual void setLayout(Layout* layout) = 0;
103
108 inline const std::string& getName() const { return _name; };
109
116 virtual void setThreshold(Priority::Value priority) = 0;
117
123
127 virtual void setFilter(Filter* filter) = 0;
128
133 virtual Filter* getFilter() = 0;
134
135 private:
136 typedef std::map<std::string, Appender*> AppenderMap;
137
138 static AppenderMap& _getAllAppenders();
139 static void _deleteAllAppenders();
140 static void _deleteAllAppendersWOLock(std::vector<Appender*> &appenders);
141 static void _addAppender(Appender* appender);
142 static void _removeAppender(Appender* appender);
143
144 const std::string _name;
145
146 public:
148 public:
149 Appender::AppenderMap* _allAppenders; // single shared instance, nifty-counter defensed
150 threading::Mutex _appenderMapMutex; // mutex protecting map from multiple thread access
151
154 };
156 public:
159 };
160 private:
161 static AppenderMapStorage &_appenderMapStorageInstance;
162 };
163
164 static Appender::AppenderMapStorageInitializer appenderMapStorageInitializer; // static initializer for every translation unit
165 typedef std::set<Appender *> AppenderSet;
166
167}
168
169#endif // _LOG4CPP_APPENDER_HH
#define LOG4CPP_EXPORT
Definition: Export.hh:26
Definition: Appender.hh:147
threading::Mutex _appenderMapMutex
Definition: Appender.hh:150
Appender::AppenderMap * _allAppenders
Definition: Appender.hh:149
Implement this interface for your own strategies for printing log statements.
Definition: Appender.hh:34
virtual void close()=0
Release any resources allocated within the appender such as file handles, network connections,...
virtual void setLayout(Layout *layout)=0
Set the Layout for this appender.
virtual void setFilter(Filter *filter)=0
Set a Filter for this appender.
virtual bool requiresLayout() const =0
Check if the appender uses a layout.
virtual Priority::Value getThreshold()=0
Get the threshold priority of this Appender.
const std::string & getName() const
Get the name of this appender.
Definition: Appender.hh:108
virtual bool reopen()=0
Reopens the output destination of this Appender, e.g.
virtual Filter * getFilter()=0
Get the Filter for this appender.
virtual void doAppend(const LoggingEvent &event)=0
Log in Appender specific way.
virtual void setThreshold(Priority::Value priority)=0
Set the threshold priority of this Appender.
This is the central class in the log4j package.
Definition: Category.hh:33
Users should extend this class to implement customized logging event filtering.
Definition: Filter.hh:49
Extend this abstract class to create your own log layout format.
Definition: Layout.hh:22
int Value
The type of Priority Values.
Definition: Priority.hh:85
Definition: PThreads.hh:29
The top level namespace for all 'Log for C++' types and classes.
Definition: AbortAppender.hh:16
std::set< Appender * > AppenderSet
Definition: Appender.hh:165
static Appender::AppenderMapStorageInitializer appenderMapStorageInitializer
Definition: Appender.hh:164
The internal representation of logging events.
Definition: LoggingEvent.hh:32