10 #define OutputDebugString(str) (std::cout << str)
16 Logger() : ofs_("mmo_log.txt") {}
17 Logger(const Logger& logger) {}
21 static void Info(const tstring& format) {
22 getInstance().Log(_T("INFO: "), format);
26 static void Info(const tstring& format, const T1& t1) {
27 getInstance().Log(_T("INFO: "), format, t1);
30 template<class T1, class T2>
31 static void Info(const tstring& format, const T1& t1, const T2& t2) {
32 getInstance().Log(_T("INFO: "), format, t1, t2);
35 template<class T1, class T2, class T3>
36 static void Info(const tstring& format, const T1& t1, const T2& t2, const T3& t3) {
37 getInstance().Log(_T("INFO: "), format, t1, t2, t3);
40 template<class T1, class T2, class T3, class T4>
41 static void Info(const tstring& format, const T1& t1, const T2& t2, const T3& t3, const T4& t4) {
42 getInstance().Log(_T("INFO: "), format, t1, t2, t3, t4);
46 static void Error(const tstring& format) {
47 getInstance().Log(_T("ERROR: "), format);
51 static void Error(const tstring& format, const T1& t1) {
52 getInstance().Log(_T("ERROR: "), format, t1);
55 template<class T1, class T2>
56 static void Error(const tstring& format, const T1& t1, const T2& t2) {
57 getInstance().Log(_T("ERROR: "), format, t1, t2);
60 template<class T1, class T2, class T3>
61 static void Error(const tstring& format, const T1& t1, const T2& t2, const T3& t3) {
62 getInstance().Log(_T("ERROR: "), format, t1, t2, t3);
65 template<class T1, class T2, class T3, class T4>
66 static void Error(const tstring& format, const T1& t1, const T2& t2, const T3& t3, const T4& t4) {
67 getInstance().Log(_T("ERROR: "), format, t1, t2, t3, t4);
71 static void Debug(const tstring& format) {
73 getInstance().Log(_T("DEBUG: "), format);
78 static void Debug(const tstring& format, const T1& t1) {
80 getInstance().Log(_T("DEBUG: "), format, t1);
84 template<class T1, class T2>
85 static void Debug(const tstring& format, const T1& t1, const T2& t2) {
87 getInstance().Log(_T("DEBUG: "), format, t1, t2);
91 template<class T1, class T2, class T3>
92 static void Debug(const tstring& format, const T1& t1, const T2& t2, const T3& t3) {
94 getInstance().Log(_T("DEBUG: "), format, t1, t2, t3);
98 template<class T1, class T2, class T3, class T4>
99 static void Debug(const tstring& format, const T1& t1, const T2& t2, const T3& t3, const T4& t4) {
101 getInstance().Log(_T("DEBUG: "), format, t1, t2, t3, t4);
107 typedef boost::basic_format<TCHAR, std::char_traits<TCHAR>, std::allocator<TCHAR>> tformat;
109 static Logger& getInstance() {
110 static Logger instance;
114 void Log(const tstring& prefix, const tstring& format) {
115 auto out = prefix + format + _T("\n");
116 OutputDebugString(out.c_str());
117 // std::wcout << unicode::ToWString(out);
118 //ofs_ << unicode::ToString(out);
122 void Log(const tstring& prefix, const tstring& format, const T1& t1) {
123 auto out = prefix + (tformat(format) % t1).str() + _T("\n");
124 OutputDebugString(out.c_str());
125 // std::wcout << unicode::ToWString(out);
126 //ofs_ << unicode::ToString(out);
129 template<class T1, class T2>
130 void Log(const tstring& prefix, const tstring& format, const T1& t1, const T2& t2) {
131 auto out = prefix + (tformat(format) % t1 % t2).str() + _T("\n");
132 OutputDebugString(out.c_str());
133 // std::wcout << unicode::ToWString(out);
134 //ofs_ << unicode::ToString(out);
137 template<class T1, class T2, class T3>
138 void Log(const tstring& prefix, const tstring& format, const T1& t1, const T2& t2, const T3& t3) {
139 auto out = prefix + (tformat(format) % t1 % t2 % t3).str() + _T("\n");
140 OutputDebugString(out.c_str());
141 // std::wcout << unicode::ToWString(out);
142 //ofs_ << unicode::ToString(out);
145 template<class T1, class T2, class T3, class T4>
146 void Log(const tstring& prefix, const tstring& format, const T1& t1, const T2& t2, const T3& t3, const T4& t4) {
147 auto out = prefix + (tformat(format) % t1 % t2 % t3 % t4).str() + _T("\n");
148 OutputDebugString(out.c_str());
149 // std::wcout << unicode::ToWString(out);
150 //ofs_ << unicode::ToString(out);