00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __MYGUI_LOG_STREAM_H__
00024 #define __MYGUI_LOG_STREAM_H__
00025
00026 #include "MyGUI_Prerequest.h"
00027 #include <fstream>
00028 #include <iostream>
00029
00030 namespace MyGUI
00031 {
00032
00033 class MYGUI_EXPORT LogStream
00034 {
00035 friend class LogManager;
00036
00037 public:
00038 struct LogStreamEnd { };
00039
00040 public:
00041 LogStream& operator<<(const LogStreamEnd& _endl);
00042
00043 template <typename T>
00044 inline LogStream& operator<<(T _value)
00045 {
00046 if (getSTDOutputEnabled()) std::cout << _value;
00047 if (mStream.is_open()) mStream << _value;
00048 return *this;
00049 }
00050
00051 const std::string& getFileName() { return mFileName; }
00052
00053 private:
00054 LogStream();
00055 ~LogStream();
00056
00057 LogStream(const std::string& _file);
00058
00059 void start(const std::string& _section, const std::string& _level);
00060
00061 bool getSTDOutputEnabled();
00062
00063 void lock() { }
00064 void release() { }
00065
00066 private:
00067 std::ofstream mStream;
00068 std::string mFileName;
00069 };
00070
00071 }
00072
00073 #endif // __MYGUI_LOG_STREAM_H__