Log.cc revision 10447:a465576671d4
1#include "Log.h"
2
3#include "Assert.h"
4
5namespace LibUtil
6{
7    using std::ostream;
8    using std::endl;
9
10    Log* Log::msSingleton = NULL;
11    const bool Log::msIsLog = LIBUTIL_IS_LOG;
12
13    void Log::allocate(const String& log_file_name_)
14    {
15        if(msIsLog)
16        {
17            // Allocate static Config instance
18            ASSERT(!msSingleton, "Log singleton is allocated");
19            msSingleton = new Log(log_file_name_);
20        }
21    }
22
23    void Log::release()
24    {
25        if(msIsLog)
26        {
27            ASSERT(msSingleton, "Log singleton is not allocated");
28            delete msSingleton;
29            msSingleton = NULL;
30        }
31        return;
32    }
33
34    void Log::print(const String& str_)
35    {
36        if(msIsLog)
37        {
38            ASSERT(msSingleton, "Log singleton is not allocated");
39            msSingleton->ofs << str_;
40        }
41        return;
42    }
43
44    void Log::print(ostream& stream_, const String& str_)
45    {
46        if(msIsLog)
47        {
48            ASSERT(msSingleton, "Log singleton is not allocated");
49            msSingleton->ofs << str_;
50        }
51        stream_ << str_;
52        return;
53    }
54
55    void Log::printLine(const String& str_)
56    {
57        if(msIsLog)
58        {
59            ASSERT(msSingleton, "Log singleton is not allocated");
60            msSingleton->ofs << str_ << endl;
61        }
62        return;
63    }
64
65    void Log::printLine(ostream& stream_, const String& str_)
66    {
67        if(msIsLog)
68        {
69            ASSERT(msSingleton, "Log singleton is not allocated");
70            msSingleton->ofs << str_ << endl;
71        }
72        stream_ << str_ << endl;
73        return;
74    }
75
76    Log::Log(const String& log_file_name_)
77    {
78        ofs.open(log_file_name_.c_str());
79    }
80
81    Log::~Log()
82    {
83        ofs.close();
84    }
85}
86
87