00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "LampBasic.h"
00026 #include "Core/System/StringMethod.h"
00027 #include "Core/Debug/DebugOutput.h"
00028 #include "Core/Debug/ErrorOutput.h"
00029 #include "Core/Debug/Logger.h"
00030 #include "Core/Debug/DebugStringTemporary.h"
00031
00032
00033 #ifdef _DEBUG
00034
00035 namespace Lamp{
00036
00037
00038 Logger* DebugOutput::logger_ = NULL;
00039
00040
00041
00042 void DebugOutput::initialize(const char* fileName){
00043 if(fileName == NULL){ return; }
00044 logger_ = new Logger(fileName);
00045 }
00046
00047
00048 void DebugOutput::finalize(){
00049 SafeDelete(logger_);
00050 }
00051
00052
00053 int DebugOutput::print(const char* format, ...){
00054 va_list args;
00055 va_start(args, format);
00056 int size = StdVsnprintf(DebugStringTemporary::buffer_,
00057 DebugStringTemporary::bufferSize_ - 1, format, args);
00058 if(size < 0){
00059 ErrorOut(String("デバッグ出力のフォーマットに失敗しました。"));
00060 return size;
00061 }
00062 DebugStringTemporary::buffer_[size] = '\0';
00063 va_end(args);
00064 StdOutputDebugString(DebugStringTemporary::buffer_);
00065 StdPrintf(DebugStringTemporary::buffer_);
00066
00067 if(logger_ != NULL){
00068 logger_->output(
00069 Logger::fewLevel, String(DebugStringTemporary::buffer_));
00070 }
00071 return size;
00072 }
00073
00074
00075 int DebugOutput::print(const String& string){
00076 StdOutputDebugString(string.getBytes());
00077 StdPrintf(string.getBytes());
00078
00079 if(logger_ != NULL){
00080 logger_->output(Logger::fewLevel, string);
00081 }
00082 return string.getSize();
00083 }
00084
00085 }
00086 #endif// End of _DEBUG
00087