[89] | 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_VARIA_FALLBACK_ERROR_HANDLER_H
|
---|
| 19 | #define _LOG4CXX_VARIA_FALLBACK_ERROR_HANDLER_H
|
---|
| 20 |
|
---|
| 21 | #include <log4cxx/spi/errorhandler.h>
|
---|
| 22 | #include <log4cxx/helpers/objectimpl.h>
|
---|
| 23 | #include <log4cxx/appender.h>
|
---|
| 24 | #include <log4cxx/logger.h>
|
---|
| 25 | #include <vector>
|
---|
| 26 |
|
---|
| 27 | namespace log4cxx
|
---|
| 28 | {
|
---|
| 29 | namespace varia
|
---|
| 30 | {
|
---|
| 31 | /**
|
---|
| 32 | The <code>FallbackErrorHandler</code> implements the ErrorHandler
|
---|
| 33 | interface such that a secondary appender may be specified. This
|
---|
| 34 | secondary appender takes over if the primary appender fails for
|
---|
| 35 | whatever reason.
|
---|
| 36 |
|
---|
| 37 | <p>The error message is printed on <code>System.err</code>, and
|
---|
| 38 | logged in the new secondary appender.
|
---|
| 39 | */
|
---|
| 40 | class LOG4CXX_EXPORT FallbackErrorHandler :
|
---|
| 41 | public virtual spi::ErrorHandler,
|
---|
| 42 | public virtual helpers::ObjectImpl
|
---|
| 43 | {
|
---|
| 44 | private:
|
---|
| 45 | AppenderPtr backup;
|
---|
| 46 | AppenderPtr primary;
|
---|
| 47 | std::vector<LoggerPtr> loggers;
|
---|
| 48 |
|
---|
| 49 | public:
|
---|
| 50 | DECLARE_LOG4CXX_OBJECT(FallbackErrorHandler)
|
---|
| 51 | BEGIN_LOG4CXX_CAST_MAP()
|
---|
| 52 | LOG4CXX_CAST_ENTRY(spi::OptionHandler)
|
---|
| 53 | LOG4CXX_CAST_ENTRY(spi::ErrorHandler)
|
---|
| 54 | END_LOG4CXX_CAST_MAP()
|
---|
| 55 |
|
---|
| 56 | FallbackErrorHandler();
|
---|
| 57 | void addRef() const;
|
---|
| 58 | void releaseRef() const;
|
---|
| 59 |
|
---|
| 60 |
|
---|
| 61 | /**
|
---|
| 62 | <em>Adds</em> the logger passed as parameter to the list of
|
---|
| 63 | loggers that we need to search for in case of appender failure.
|
---|
| 64 | */
|
---|
| 65 | void setLogger(const LoggerPtr& logger);
|
---|
| 66 |
|
---|
| 67 |
|
---|
| 68 | /**
|
---|
| 69 | No options to activate.
|
---|
| 70 | */
|
---|
| 71 | void activateOptions(log4cxx::helpers::Pool& p);
|
---|
| 72 | void setOption(const LogString& option, const LogString& value);
|
---|
| 73 |
|
---|
| 74 |
|
---|
| 75 | /**
|
---|
| 76 | Prints the message and the stack trace of the exception on
|
---|
| 77 | <code>System.err</code>.
|
---|
| 78 | */
|
---|
| 79 | void error(const LogString& message, const std::exception& e,
|
---|
| 80 | int errorCode) const;
|
---|
| 81 |
|
---|
| 82 | /**
|
---|
| 83 | Prints the message and the stack trace of the exception on
|
---|
| 84 | <code>System.err</code>.
|
---|
| 85 | */
|
---|
| 86 | void error(const LogString& message, const std::exception& e,
|
---|
| 87 | int errorCode, const spi::LoggingEventPtr& event) const;
|
---|
| 88 |
|
---|
| 89 |
|
---|
| 90 | /**
|
---|
| 91 | Print a the error message passed as parameter on
|
---|
| 92 | <code>System.err</code>.
|
---|
| 93 | */
|
---|
| 94 | void error(const LogString& /* message */) const {}
|
---|
| 95 |
|
---|
| 96 | /**
|
---|
| 97 | Return the backup appender.
|
---|
| 98 | */
|
---|
| 99 | const AppenderPtr& getBackupAppender() const
|
---|
| 100 | { return backup; }
|
---|
| 101 |
|
---|
| 102 | /**
|
---|
| 103 | The appender to which this error handler is attached.
|
---|
| 104 | */
|
---|
| 105 | void setAppender(const AppenderPtr& primary);
|
---|
| 106 |
|
---|
| 107 | /**
|
---|
| 108 | Set the backup appender.
|
---|
| 109 | */
|
---|
| 110 | void setBackupAppender(const AppenderPtr& backup);
|
---|
| 111 | };
|
---|
| 112 | } // namespace varia
|
---|
| 113 | } // namespace log4cxx
|
---|
| 114 |
|
---|
| 115 | #endif //_LOG4CXX_VARIA_FALLBACK_ERROR_HANDLER_H
|
---|
| 116 |
|
---|