/usr/include/qpid/log/Logger.h is in libqpidcommon2-dev 0.16-7ubuntu5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | #ifndef QPID_LOG_LOGGER_H
#define QPID_LOG_LOGGER_H
/*
* 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.
*
*/
#include "qpid/log/Selector.h"
#include "qpid/log/Options.h"
#include "qpid/sys/Mutex.h"
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/noncopyable.hpp>
#include <set>
#include "qpid/CommonImportExport.h"
namespace qpid {
namespace log {
/**
* Central logging agent.
*
* Thread safe, singleton.
*
* The Logger provides all needed functionality for selecting and
* formatting logging output. The actual outputting of log records
* is handled by Logger::Output-derived classes instantiated by the
* platform's sink-related options.
*/
class QPID_COMMON_CLASS_EXTERN Logger : private boost::noncopyable {
public:
/** Flags indicating what to include in the log output */
enum FormatFlag { FILE=1, LINE=2, FUNCTION=4, LEVEL=8, TIME=16, THREAD=32, HIRES=64};
/**
* Logging output sink.
*
* The Output sink provides an interface to direct logging output to.
* Logging sinks are primarily platform-specific as provided for on
* each platform.
*
* Implementations of Output must be thread safe.
*/
class Output {
public:
QPID_COMMON_EXTERN Output();
QPID_COMMON_EXTERN virtual ~Output();
/** Receives the statemnt of origin and formatted message to log. */
virtual void log(const Statement&, const std::string&) =0;
};
QPID_COMMON_EXTERN static Logger& instance();
QPID_COMMON_EXTERN Logger();
QPID_COMMON_EXTERN ~Logger();
/** Select the messages to be logged. */
QPID_COMMON_EXTERN void select(const Selector& s);
/** Set the formatting flags, bitwise OR of FormatFlag values. */
QPID_COMMON_EXTERN void format(int formatFlags);
/** Set format flags from options object.
*@returns computed flags.
*/
QPID_COMMON_EXTERN int format(const Options&);
/** Configure logger from Options */
QPID_COMMON_EXTERN void configure(const Options& o);
/** Reset the log selectors */
QPID_COMMON_EXTERN void reconfigure(const std::vector<std::string>& selectors);
/** Add a statement. */
QPID_COMMON_EXTERN void add(Statement& s);
/** Log a message. */
QPID_COMMON_EXTERN void log(const Statement&, const std::string&);
/** Add an output destination for messages */
QPID_COMMON_EXTERN void output(std::auto_ptr<Output> out);
/** Set a prefix for all messages */
QPID_COMMON_EXTERN void setPrefix(const std::string& prefix);
/** Reset the logger. */
QPID_COMMON_EXTERN void clear();
/** Get the options used to configure the logger. */
QPID_COMMON_INLINE_EXTERN const Options& getOptions() const { return options; }
private:
typedef boost::ptr_vector<Output> Outputs;
typedef std::set<Statement*> Statements;
sys::Mutex lock;
inline void enable_unlocked(Statement* s);
Statements statements;
Outputs outputs;
Selector selector;
int flags;
std::string prefix;
Options options;
};
}} // namespace qpid::log
#endif /*!QPID_LOG_LOGGER_H*/
|