/*!
	@file: optimization/FileLog.h
	@author: Matthias Wacker
*/

#ifndef _FILELOG_H_
#define _FILELOG_H_

#include <string>
#include <fstream>
#include "core/optimization/blackbox/OptLogBase.h"

namespace OPTIMIZATION
{

  class FileLog : public OptLogBase
  {

    public:
    
    /*!
      default
    */
    FileLog(){};

    /*!
      @param file string with the filename to log to
    */
    //FileLog( string file);
    FileLog( std::string file);

    /*!
      destructor
    */
    virtual ~FileLog();

    /**! Write error message to an output device (file, stdio, etc.)
    */
    virtual void writeLogError(const char* szMessage);

    /**! Write warning message to an output device (file, stdio, etc.)
    */
    virtual void writeLogWarning(const char* szMessage);

    /**! Write trace message to an output device (file, stdio, etc.)
    */
    virtual void writeLogTrace(const char* szMessage);

    private:
    
    std::ofstream m_stream;

    void toFile(const char* szMessage);
  };//class
}//namespace



#endif