diff options
Diffstat (limited to 'Logger.h')
-rw-r--r-- | Logger.h | 42 |
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_ */ |