diff options
Diffstat (limited to 'TamTamMini.activity/common/Util/Clooper/log.cpp')
-rw-r--r-- | TamTamMini.activity/common/Util/Clooper/log.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/TamTamMini.activity/common/Util/Clooper/log.cpp b/TamTamMini.activity/common/Util/Clooper/log.cpp new file mode 100644 index 0000000..d4a8c72 --- /dev/null +++ b/TamTamMini.activity/common/Util/Clooper/log.cpp @@ -0,0 +1,52 @@ +#ifndef LOG_HXX +#define LOG_HXX + +#include <stdarg.h> +#include <stdio.h> + +struct log_t +{ + FILE * _file; + int _level; + int _close; + + log_t(const char * logpath, int level = 0) : _file(NULL), _level(level), _close(1) + { + _file = fopen(logpath, "w"); + if (!_file) + { + fprintf(stderr, "Failed to open log file for writing: %s\n", logpath); + } + } + log_t(FILE * file, int level = 0): _file(file), _level(level), _close(0) + { + } + ~log_t() + { + if (_close && _file) fclose(_file); + } + void printf( const char * fmt, ... ) __attribute__(( format (printf, 2,3))) + { + if (!_file) return; + va_list ap; + va_start(ap,fmt); + ::vfprintf(_file, fmt, ap); + va_end(ap); + fflush(_file); + } + void printf( int level, const char * fmt, ... ) __attribute__(( format (printf, 3,4))) + { + if (level <= _level) + { + if (!_file) return; + fprintf(_file, "L%i:", level); + va_list ap; + va_start(ap,fmt); + ::vfprintf(_file, fmt, ap); + va_end(ap); + fflush(_file); + } + } +}; + +#endif |