summaryrefslogtreecommitdiff
path: root/Logger.h
diff options
context:
space:
mode:
Diffstat (limited to 'Logger.h')
-rw-r--r--Logger.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/Logger.h b/Logger.h
new file mode 100644
index 0000000..5ee5bd4
--- /dev/null
+++ b/Logger.h
@@ -0,0 +1,42 @@
+/**
+ * General purpose logger class.
+ *
+ * Copyright (C) 2013 Tobias Klauser <tklauser@distanz.ch>
+ *
+ * This file is subject to the terms and conditions of the GNU General
+ * Public License, version 2.
+ */
+
+#ifndef LOGGER_H_
+#define LOGGER_H_
+
+#include <stdarg.h>
+#include <stdio.h>
+
+/* TODO: Make singleton */
+class Logger {
+
+public:
+ static Logger& getInstance()
+ {
+ // instantiated on first use, guaranteed to be destroyed
+ static Logger instance;
+ return instance;
+ }
+
+ int log(const char *fmt, ...);
+ int err(const char *fmt, ...);
+private:
+ Logger() : _f_out(stdout), _f_err(stderr) { }
+ ~Logger() { }
+ // Declare copy constructer to prevent the compiler from generating one
+ Logger(Logger const&);
+ void operator=(Logger const&);
+
+ FILE *_f_out, *_f_err;
+ static const char *_LOGGER_DATE_FMT;
+
+ int _log_vfprintf(FILE *f, const char *prefix, const char *fmt, va_list ap);
+};
+
+#endif /* LOGGER_H_ */