Log.cc revision 10447
110447Snilay@cs.wisc.edu#include "Log.h"
210447Snilay@cs.wisc.edu
310447Snilay@cs.wisc.edu#include "Assert.h"
410447Snilay@cs.wisc.edu
510447Snilay@cs.wisc.edunamespace LibUtil
610447Snilay@cs.wisc.edu{
710447Snilay@cs.wisc.edu    using std::ostream;
810447Snilay@cs.wisc.edu    using std::endl;
910447Snilay@cs.wisc.edu
1010447Snilay@cs.wisc.edu    Log* Log::msSingleton = NULL;
1110447Snilay@cs.wisc.edu    const bool Log::msIsLog = LIBUTIL_IS_LOG;
1210447Snilay@cs.wisc.edu
1310447Snilay@cs.wisc.edu    void Log::allocate(const String& log_file_name_)
1410447Snilay@cs.wisc.edu    {
1510447Snilay@cs.wisc.edu        if(msIsLog)
1610447Snilay@cs.wisc.edu        {
1710447Snilay@cs.wisc.edu            // Allocate static Config instance
1810447Snilay@cs.wisc.edu            ASSERT(!msSingleton, "Log singleton is allocated");
1910447Snilay@cs.wisc.edu            msSingleton = new Log(log_file_name_);
2010447Snilay@cs.wisc.edu        }
2110447Snilay@cs.wisc.edu    }
2210447Snilay@cs.wisc.edu
2310447Snilay@cs.wisc.edu    void Log::release()
2410447Snilay@cs.wisc.edu    {
2510447Snilay@cs.wisc.edu        if(msIsLog)
2610447Snilay@cs.wisc.edu        {
2710447Snilay@cs.wisc.edu            ASSERT(msSingleton, "Log singleton is not allocated");
2810447Snilay@cs.wisc.edu            delete msSingleton;
2910447Snilay@cs.wisc.edu            msSingleton = NULL;
3010447Snilay@cs.wisc.edu        }
3110447Snilay@cs.wisc.edu        return;
3210447Snilay@cs.wisc.edu    }
3310447Snilay@cs.wisc.edu
3410447Snilay@cs.wisc.edu    void Log::print(const String& str_)
3510447Snilay@cs.wisc.edu    {
3610447Snilay@cs.wisc.edu        if(msIsLog)
3710447Snilay@cs.wisc.edu        {
3810447Snilay@cs.wisc.edu            ASSERT(msSingleton, "Log singleton is not allocated");
3910447Snilay@cs.wisc.edu            msSingleton->ofs << str_;
4010447Snilay@cs.wisc.edu        }
4110447Snilay@cs.wisc.edu        return;
4210447Snilay@cs.wisc.edu    }
4310447Snilay@cs.wisc.edu
4410447Snilay@cs.wisc.edu    void Log::print(ostream& stream_, const String& str_)
4510447Snilay@cs.wisc.edu    {
4610447Snilay@cs.wisc.edu        if(msIsLog)
4710447Snilay@cs.wisc.edu        {
4810447Snilay@cs.wisc.edu            ASSERT(msSingleton, "Log singleton is not allocated");
4910447Snilay@cs.wisc.edu            msSingleton->ofs << str_;
5010447Snilay@cs.wisc.edu        }
5110447Snilay@cs.wisc.edu        stream_ << str_;
5210447Snilay@cs.wisc.edu        return;
5310447Snilay@cs.wisc.edu    }
5410447Snilay@cs.wisc.edu
5510447Snilay@cs.wisc.edu    void Log::printLine(const String& str_)
5610447Snilay@cs.wisc.edu    {
5710447Snilay@cs.wisc.edu        if(msIsLog)
5810447Snilay@cs.wisc.edu        {
5910447Snilay@cs.wisc.edu            ASSERT(msSingleton, "Log singleton is not allocated");
6010447Snilay@cs.wisc.edu            msSingleton->ofs << str_ << endl;
6110447Snilay@cs.wisc.edu        }
6210447Snilay@cs.wisc.edu        return;
6310447Snilay@cs.wisc.edu    }
6410447Snilay@cs.wisc.edu
6510447Snilay@cs.wisc.edu    void Log::printLine(ostream& stream_, const String& str_)
6610447Snilay@cs.wisc.edu    {
6710447Snilay@cs.wisc.edu        if(msIsLog)
6810447Snilay@cs.wisc.edu        {
6910447Snilay@cs.wisc.edu            ASSERT(msSingleton, "Log singleton is not allocated");
7010447Snilay@cs.wisc.edu            msSingleton->ofs << str_ << endl;
7110447Snilay@cs.wisc.edu        }
7210447Snilay@cs.wisc.edu        stream_ << str_ << endl;
7310447Snilay@cs.wisc.edu        return;
7410447Snilay@cs.wisc.edu    }
7510447Snilay@cs.wisc.edu
7610447Snilay@cs.wisc.edu    Log::Log(const String& log_file_name_)
7710447Snilay@cs.wisc.edu    {
7810447Snilay@cs.wisc.edu        ofs.open(log_file_name_.c_str());
7910447Snilay@cs.wisc.edu    }
8010447Snilay@cs.wisc.edu
8110447Snilay@cs.wisc.edu    Log::~Log()
8210447Snilay@cs.wisc.edu    {
8310447Snilay@cs.wisc.edu        ofs.close();
8410447Snilay@cs.wisc.edu    }
8510447Snilay@cs.wisc.edu}
8610447Snilay@cs.wisc.edu
87