OpenMEEG
Loading...
Searching...
No Matches
logger.h
Go to the documentation of this file.
1// Project Name: OpenMEEG (http://openmeeg.github.io)
2// © INRIA and ENPC under the French open source license CeCILL-B.
3// See full copyright notice in the file LICENSE.txt
4// If you make a copy of this file, you must either:
5// - provide also LICENSE.txt and modify this header to refer to it.
6// - replace this header by the LICENSE.txt content.
7
8#pragma once
9
10#include <iostream>
11#include <NullStream.h>
12
13namespace OpenMEEG {
14
16
17 class Logger {
18 public:
19
20 Logger() { }
21
22 void set_info_level(const InfoLevel level) { verbosity = level; }
23
24 InfoLevel get_info_level() const { return verbosity; }
25
26 bool is_verbose(const InfoLevel level) { return verbosity<=level; }
27
28 static Logger& logger() {
29 static Logger logger;
30 return logger;
31 }
32
33 private:
34
35 InfoLevel verbosity;
36 };
37
38 inline std::ostream&
39 log_stream(const InfoLevel level) {
40 static NullStream<char> nullstream;
41 if (level==WARNING && Logger::logger().is_verbose(level))
42 std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl
43 << "!!!!!!!!!!! WARNING !!!!!!!!!!!" << std::endl
44 << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl;
45 return (Logger::logger().is_verbose(level)) ? std::cout : nullstream;
46 }
47}
InfoLevel get_info_level() const
Definition logger.h:24
bool is_verbose(const InfoLevel level)
Definition logger.h:26
static Logger & logger()
Definition logger.h:28
void set_info_level(const InfoLevel level)
Definition logger.h:22
std::ostream & log_stream(const InfoLevel level)
Definition logger.h:39
InfoLevel
Definition logger.h:15
@ PROGRESS
Definition logger.h:15
@ ERROR
Definition logger.h:15
@ DEBUG
Definition logger.h:15
@ WARNING
Definition logger.h:15
@ INFORMATION
Definition logger.h:15