1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
/******************************************************************************
*
* package: Log4Qt
* file: loggerrepository.h
* created: September 2007
* author: Martin Heinrich
*
*
* Copyright 2007 Martin Heinrich
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
#ifndef LOG4QT_LOGGERREPOSITORY_H
#define LOG4QT_LOGGERREPOSITORY_H
/******************************************************************************
* Dependencies
******************************************************************************/
#include <QtCore/QList>
#include "level.h"
/******************************************************************************
* Declarations
******************************************************************************/
namespace Log4Qt
{
class Logger;
/*!
* \brief The class LoggerRepository is abstract base class for a logger
* repository.
*/
class LOG4QT_EXPORT LoggerRepository
{
public:
// LoggerRepository(); // Use compiler default
// LoggerRepository(const LoggerRepository &rOther); // Use compiler default
// LoggerRepository &operator=(const LoggerRepository &rOther); // Use compiler default
virtual ~LoggerRepository();
public:
virtual bool exists(const QString &rName) const = 0;
virtual Logger *logger(const QString &rName) = 0;
// JAVA: virtual Logger *logger(const String &rName, LoggerFactory *pFactory);
virtual QList<Logger *> loggers() const = 0;
virtual Logger *rootLogger() const = 0;
virtual Level threshold() const = 0;
virtual void setThreshold(Level level) = 0;
virtual void setThreshold(const QString &rThreshold) = 0;
virtual bool isDisabled(Level level) = 0;
virtual void resetConfiguration() = 0;
virtual void shutdown() = 0;
// JAVA: virtual void addHierarchyEventListener(HierarchyEventListener *pEventListener);
// JAVA: virtual void emitNoAppenderWarning(Logger *plogger) const;
// JAVA: virtual void fireAddAppenderEvent(Logger *plogger, Appender *pAppender) const;
protected:
#ifndef QT_NO_DEBUG_STREAM
/*!
*\relates LoggerRepository
*
* Writes all object member variables to the given debug stream \a rDebug
* and returns the stream.
*
* The member function is used by
* QDebug operator<<(QDebug debug, const LoggerRepository &rLoggerRepository)
* to generate class specific output.
*
* \sa QDebug operator<<(QDebug debug, const LoggerRepository &rLoggerRepository)
*/
virtual QDebug debug(QDebug &rDebug) const = 0;
friend QDebug operator<<(QDebug debug,
const LoggerRepository &rLoggerRepository);
#endif
};
/******************************************************************************
* Operators, Helper
******************************************************************************/
#ifndef QT_NO_DEBUG_STREAM
/*!
* \relates LoggerRepository
* Writes all object member variables to the given debug stream \a debug
* and returns the stream.
*
* To handle subclassing the function uses the virtual member function
* debug(). This allows each class to generate its own output.
*
* \sa QDebug, debug()
*/
QDebug operator<<(QDebug debug,
const LoggerRepository &rLoggerRepository);
#endif
/**************************************************************************
* Inline
**************************************************************************/
} // namespace Log4Qt
// Q_DECLARE_TYPEINFO(Log4Qt::LoggerRepository, Q_COMPLEX_TYPE); // Use default
#endif // LOG4QT_LOGGERREPOSITORY_H
|