Apache Log4cxx  Version 1.8.0
appenderattachableimpl.h
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef _LOG4CXX_HELPERS_APPENDER_ATTACHABLE_IMPL_H
19 #define _LOG4CXX_HELPERS_APPENDER_ATTACHABLE_IMPL_H
20 
21 
23 #include <log4cxx/helpers/pool.h>
24 #include <log4cxx/log4cxx.h>
25 
26 namespace LOG4CXX_NS
27 {
28 namespace spi
29 {
30 class LoggingEvent;
31 typedef std::shared_ptr<LoggingEvent> LoggingEventPtr;
32 }
33 
34 namespace helpers
35 {
36 
37 class LOG4CXX_EXPORT AppenderAttachableImpl :
38  public virtual spi::AppenderAttachable
39 {
40  protected:
41  AppenderList& appenderList();
42 
43  public:
48 #if LOG4CXX_ABI_VERSION <= 15
49  [[ deprecated( "Pool is no longer required" ) ]]
51 #endif
53 
57  LOG4CXX_CAST_ENTRY(spi::AppenderAttachable)
59 
60  // Methods
64  void addAppender(const AppenderPtr newAppender) override;
65 
66 #if LOG4CXX_ABI_VERSION <= 15
71  [[ deprecated( "Pool is no longer required" ) ]]
73  LOG4CXX_NS::helpers::Pool& p);
74 #endif
79 
83  AppenderList getAllAppenders() const override;
84 
88  AppenderPtr getAppender(const LogString& name) const override;
89 
94  bool isAttached(const AppenderPtr appender) const override;
95 
99  void removeAllAppenders() override;
100 
104  void removeAppender(const AppenderPtr appender) override;
105 
110  void removeAppender(const LogString& name) override;
111 
116  bool replaceAppender(const AppenderPtr& oldAppender, const AppenderPtr& newAppender) LOG4CXX_16_VIRTUAL_SPECIFIER;
117 
121  void replaceAppenders(const AppenderList& newList) LOG4CXX_16_VIRTUAL_SPECIFIER;
122 
123  private:
124  LOG4CXX_DECLARE_PRIVATE_MEMBER_PTR(priv_data, m_priv)
125 
128 };
129 
131 
132 }
133 }
134 
135 
136 #endif //_LOG4CXX_HELPERS_APPENDER_ATTACHABLE_IMPL_H
Definition: appenderattachableimpl.h:39
void removeAppender(const AppenderPtr appender) override
Remove the appender passed as parameter from the list of appenders.
void removeAllAppenders() override
Remove all previously added appenders.
int appendLoopOnAppenders(const spi::LoggingEventPtr &event)
Send event to all attached appenders.
AppenderPtr getAppender(const LogString &name) const override
Get an appender by name.
AppenderAttachableImpl()
Create new instance.
bool isAttached(const AppenderPtr appender) const override
Returns true if the specified appender is in the list of attached appenders, false otherwise.
bool replaceAppender(const AppenderPtr &oldAppender, const AppenderPtr &newAppender) LOG4CXX_16_VIRTUAL_SPECIFIER
Replace oldAppender with newAppender.
void replaceAppenders(const AppenderList &newList) LOG4CXX_16_VIRTUAL_SPECIFIER
Replace any previously added appenders with newList.
int appendLoopOnAppenders(const spi::LoggingEventPtr &event, log4cxx::helpers::Pool &p)
Call the doAppend method on all attached appenders.
void removeAppender(const LogString &name) override
Remove the appender with the name passed as parameter from the list of appenders.
AppenderList getAllAppenders() const override
Get all previously added appenders as an Enumeration.
Definition: pool.h:33
This Interface is for attaching Appenders to objects.
Definition: appenderattachable.h:33
LOG4CXX_PTR_DEF(AppenderAttachableImpl)
std::shared_ptr< LoggingEvent > LoggingEventPtr
Definition: appender.h:31
std::basic_string< logchar > LogString
Definition: logstring.h:60
std::shared_ptr< Appender > AppenderPtr
Definition: basicconfigurator.h:28
#define LOG4CXX_CAST_ENTRY(Interface)
Definition: object.h:154
#define DECLARE_ABSTRACT_LOG4CXX_OBJECT(object)
Definition: object.h:37
#define END_LOG4CXX_CAST_MAP()
Definition: object.h:148
#define BEGIN_LOG4CXX_CAST_MAP()
Definition: object.h:142
#define LOG4CXX_16_VIRTUAL_SPECIFIER
Definition: socket.h:109