/usr/include/magics/MagLog.h is in libmagics++-dev 3.0.0-1.
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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | /*
* (C) Copyright 1996-2016 ECMWF.
*
* This software is licensed under the terms of the Apache Licence Version 2.0
* which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
* In applying this licence, ECMWF does not waive the privileges and immunities
* granted to it by virtue of its status as an intergovernmental organisation nor
* does it submit to any jurisdiction.
*/
/*! \file MagLog.h
\brief Definition of log class.
\author Meteorological Visualisation Section, ECMWF
Started: Jan 2004
*/
#ifndef MPPMagLog_H
#define MPPMagLog_H
#include "magics.h"
#include <fstream>
using std::ofstream;
namespace magics {
class ErrorReporter
{
public:
ErrorReporter() : errors_(0), warnings_(0) {}
void error() const { errors_++; }
void warning() const { warnings_++; }
void report(ostream&) const;
protected:
mutable int errors_;
mutable int warnings_;
};
class MagicsObserver;
class MagLog {
public:
MagLog();
//! Destructor
~MagLog();
// -- Methods
static ostream& warning();
static ostream& debug();
static ostream& info();
static ostream& userInfo();
static ostream& error();
static ostream& fatal();
static ostream& dev();
static ostream& profile();
static ostream& progress();
static void progress(const string&);
static void broadcast();
static void devMessage(bool dev = true)
{ log_.dev_ = dev; }
static void infoMessage(bool info = true)
{ log_.info_ = info; }
static void userInfoMessage(bool info = true)
{ log_.userInfo_ = info; }
static void warningMessage(bool warning = true)
{ log_.warning_ = warning; }
static void debugMessage(bool debug = true)
{ log_.debug_ = debug; }
static void errorMessage(bool error = true)
{ log_.error_ = error; }
static void profilingMessage(bool error = true)
{ log_.error_ = error; }
static void fatalMessage(bool fatal = true)
{ log_.fatal_ = fatal; }
static void header(bool header)
{ header_ = header; }
static void setReporter(const ErrorReporter* reporter) { log_.reporter_ = reporter; }
static void registerObserver(MagicsObserver* observer) { log_.observers_.push_back(observer); }
static void unregisterObserver(MagicsObserver* observer);
protected:
// -- Methods
void print(ostream&) const;
const ErrorReporter* reporter_;
private:
// No copy allowed
MagLog(const MagLog&);
MagLog& operator=(const MagLog&);
// -- Members
static MagLog log_;
static bool header_;
ofstream devnull_;
bool debug_;
bool dev_;
bool info_;
bool userInfo_;
bool warning_;
bool error_;
bool fatal_;
bool profiling_;
string stamp_;
int warnings_;
ostringstream infostream_;
ostringstream warningstream_;
ostringstream errorstream_;
ostringstream progressstream_;
vector<MagicsObserver*> observers_;
// -- Friends
friend ostream& operator<<(ostream& s,const MagLog& p)
{ p.print(s); return s; }
};
#define LOGDEV(a) MagLog::dev() << __FUNCTION__ << "--->" << #a << " = " << a << "\n";
#define VALGRIND MagLog::dev() << "valgrind----->" << __FUNCTION__ << "\n";
}
#endif
|