File: Logging.h

package info (click to toggle)
structure-synth 1.5.0-2
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 2,268 kB
  • ctags: 1,966
  • sloc: cpp: 10,209; python: 164; makefile: 71; sh: 15
file content (52 lines) | stat: -rw-r--r-- 1,287 bytes parent folder | download | duplicates (9)
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
#pragma once

#include <QString>
#include <QVector>
#include <QTime>
#include <QStack>

namespace SyntopiaCore {
	namespace Logging {	
		/// Predefined logging levels
		enum LogLevel { NoneLevel, DebugLevel, TimingLevel, InfoLevel, WarningLevel, CriticalLevel, AllLevel };

		/// Abstract base class for all loggers
		class Logger {
		public:
			/// The destructors and constructors automatically add to the list of installed loggers.
			Logger() { 
				loggers.append(this); 
			}

			virtual ~Logger() { 
				// Remove from list of available loggers.
				for (int i = loggers.size()-1; i >= 0; i--) {
					if (loggers[i] == this) loggers.remove(i);
				}
			}

			/// This method all loggers must implement
			virtual void log(QString message, LogLevel priority) = 0;
			
			/// Log messages are sent to this list of loggers.
			static QVector<Logger*> loggers;
			static QStack<QTime> timeStack;
			static QStack<QString> timeStringStack;
		private:
			
		};


		void LOG(QString message, LogLevel priority);

		/// Useful aliases
		void Debug(QString text);
		void INFO(QString text);
		void TIME(QString text);
		void TIME(int repetitions = 0); // End time...
		void WARNING(QString text);
		void CRITICAL(QString text);
		
	}
}