6 #include <boost/format.hpp> 41 : m_logFileAndConsole(false),
46 m_disableColours(false),
48 m_logfileName(_fname),
53 m_file.open(m_logfileName.c_str());
54 if (!m_file.is_open())
56 std::cerr <<
"error opening log file for writing\n";
59 Tee tee(std::cout, m_file);
62 m_output.set_auto_close(
true);
64 if (!m_output.is_open())
66 std::cerr <<
"problem opening log stream tee\n";
69 m_timeString =
"%I:%M%p";
78 timeStr = ctime(&rawTime);
79 timeinfo = localtime(&rawTime);
81 strftime(buffer, 80, m_timeString.c_str(), timeinfo);
89 if (m_lineNumber ==
true)
100 if (m_timeStamp ==
true)
115 if (m_disableColours)
return;
136 m_impl->m_output <<
"Logger started " <<
m_impl->currentTime() <<
"\n";
144 m_impl->m_output <<
"Logger started " <<
m_impl->currentTime() <<
"\n";
173 m_impl->writeLineNumber();
178 vsprintf(buffer, fmt, args);
194 m_impl->writeLineNumber();
199 vsprintf(buffer, fmt, args);
201 m_impl->m_output <<
"[ERROR] ";
216 m_impl->writeLineNumber();
221 vsprintf(buffer,
fmt, args);
223 m_impl->m_output <<
"[Warning] ";
238 m_impl->m_logFile =
false;
242 m_impl->m_logConsole =
true;
246 m_impl->m_logConsole =
false;
250 m_impl->m_logConsole =
true;
255 m_impl->m_logConsole =
false;
256 m_impl->m_logFile =
false;
265 m_impl->m_logfileName = _fname;
267 if (!
m_impl->m_file.is_open())
269 std::cerr <<
"error opening log file for writing\n";
274 m_impl->m_output.open(tee);
275 m_impl->m_output.set_auto_close(
true);
277 if (!
m_impl->m_output.is_open())
279 std::cerr <<
"problem opening log stream tee\n";
289 m_impl->m_lineNumber =
true;
293 m_impl->m_lineNumber =
false;
297 m_impl->m_timeStamp =
true;
301 m_impl->m_timeStamp =
false;
306 m_impl->m_disableColours =
true;
311 m_impl->m_disableColours =
false;
void logWarning(const char *fmt,...) noexcept
void setColour(Colours _c) noexcept
std::string m_logfileName
std::unique_ptr< Impl > m_impl
void writeTimeStamp() noexcept
void logMessage(const char *fmt,...) noexcept
std::string currentTime() noexcept
void writeLineNumber() noexcept
void enableColours() noexcept
boost::iostreams::tee_device< std::ostream, std::ofstream > Tee
boost::iostreams::stream< Logger::Tee > & cout() noexcept
boost::iostreams::stream< Tee > TeeStream
implementation files for RibExport class
void enableTimeStamp() noexcept
void enableLogToFileAndConsole() noexcept
void logError(const char *fmt,...) noexcept
void setColour(Colours c) noexcept
void setTimeFormat(TimeFormat _f) noexcept
Impl(const std::string &_fname) noexcept
void write(const std::string &_text) noexcept
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
void disableLogToFileAndConsole() noexcept
unsigned int m_lineNumberCount
void disableLineNumbers() noexcept
void disableTimeStamp() noexcept
void disableLogToConsole() noexcept
void setLineNumberPad(unsigned int i) noexcept
void setLogFile(const std::string &_fname) noexcept
void disableLogToFile() noexcept
void disableColours() noexcept
void enableLogToConsole() noexcept
void enableLineNumbers() noexcept
void enableLogToFile() noexcept
GLsizei const GLchar *const * string