C++용 Log 클래스
15 Jul 2017 | C++11 DebugC++ 에서 사용할 수 있는 Log 클래스입니다. 안드로이드 NDK 환경이나 Windows 환경 등에서도 사용할 수 있습니다. 사용법을 최대한 안드로이드 Java의 Log 클래스와 비슷하게 흉내냈습니다.
Log.h
#ifndef SNOWDEER_LOG_H #define SNOWDEER_LOG_H class Log { public: static void v(const char* format, ...); static void d(const char* format, ...); static void i(const char* format, ...); static void w(const char* format, ...); static void e(const char* format, ...); private: Log() {} virtual ~Log() {} }; #endif //SNOWDEER_LOG_H
Log.cc
#include "Log.h" #include <cstdio> #ifdef __ANDROID__ #include <android/log.h> #else #include <stdarg.h> #endif const char* gLogTag = "SDLog"; #ifdef __ANDROID__ #define PLOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, gProseLogTag, __VA_ARGS__) #define PLOGD(...) __android_log_print(ANDROID_LOG_DEBUG, gProseLogTag, __VA_ARGS__) #define PLOGI(...) __android_log_print(ANDROID_LOG_INFO, gProseLogTag,__VA_ARGS__) #define PLOGW(...) __android_log_print(ANDROID_LOG_WARN, gProseLogTag,__VA_ARGS__) #define PLOGE(...) __android_log_print(ANDROID_LOG_ERROR, gProseLogTag, __VA_ARGS__) #define PLOGF(...) __android_log_print(ANDROID_FATAL_ERROR, gProseLogTag,__VA_ARGS__) #define PLOGS(...) __android_log_print(ANDROID_SILENT_ERROR, gProseLogTag,__VA_ARGS__) #else #define LOGV(...) #define LOGD(...) #define LOGI(...) #define LOGW(...) #define LOGE(...) #define LOGF(...) #define LOGS(...) #endif void Log::v(const char* format, ...) { char message[1024] = { 0, }; va_list lpStart; va_start(lpStart, format); vsprintf(message, format, lpStart); va_end(lpStart); printf("[%s] %s\n", gLogTag, message); LOGV("%s", message); } void Log::d(const char* format, ...) { char message[1024] = { 0, }; va_list lpStart; va_start(lpStart, format); vsprintf(message, format, lpStart); va_end(lpStart); printf("[%s] %s\n", gLogTag, message); LOGD("%s", message); } void Log::i(const char* format, ...) { char message[1024] = { 0, }; va_list lpStart; va_start(lpStart, format); vsprintf(message, format, lpStart); va_end(lpStart); printf("[%s] %s\n", gLogTag, message); LOGI("%s", message); } void Log::w(const char* format, ...) { char message[1024] = { 0, }; va_list lpStart; va_start(lpStart, format); vsprintf(message, format, lpStart); va_end(lpStart); printf("[%s] %s\n", gLogTag, message); LOGW("%s", message); } void Log::e(const char* format, ...) { char message[1024] = { 0, }; va_list lpStart; va_start(lpStart, format); vsprintf(message, format, lpStart); va_end(lpStart); printf("[%s] %s\n", gLogTag, message); LOGE("%s", message); }