Skip to content
Snippets Groups Projects
Log.cc 1.45 KiB
/*  Log.cc

    Mark Woolrich, FMRIB Image Analysis Group

    Copyright (C) 1999-2000 University of Oxford  */

/*  CCOPYRIGHT  */

#include "Log.h"
#include <iostream>
#include <fstream>
#include <strstream>
#include <string>

namespace Utilities {

  Log* Log::logger = NULL;
  int Log::count = 0;

  template<class t> string tostring(const t obj)
  {
    char strc[100];
    ostrstream str(strc,100);
    str << obj << '\0';
    return string(strc);
  }

  // SPECIFIC INSTANTIATIONS
  template<int> string tostring(const int obj);

  void Log::makeDir(const string& pdirname, const string& plogfilename) 
    {
      dir = pdirname;
      logfilename = plogfilename;

      // make directory to place results into:
      // keep adding "+" until directory is made:      
      int count = 0;
      while(true)
	{
	  if(count >= 20)
	    {
	      string s("Cannot create directory " + dir);
	      throw Exception(s.c_str());
	    }

	  int ret = system(("mkdir "+ dir + " 2>/dev/null").c_str());
	  if(ret == 0)
	    {
	      break;
	    }
	  dir = dir + "+";
	  count++;
	}
      
      // setup logfile
      logfileout.open((dir + "/" + logfilename).c_str(), ios::out);

      logEstablished = true;
    }

void Log::setDir(const string& pdirname, const string& plogfilename) 
    {
      dir = pdirname;
      logfilename = plogfilename;

      // setup logfile
      logfileout.open((dir + "/" + logfilename).c_str(), ios::out);

      logEstablished = true;
    }
}