#if !defined(__WIN32)
#include <termios.h>
#else
-int isatty(int dummy) { return 0; }
+inline int isatty(int dummy) { return 0; }
#endif
case log::error: prefix_ = " error: "; break;
case log::warning: prefix_ = "warning: "; break;
case log::info: prefix_ = " info: "; break;
+ case log::debug: prefix_ = " debug: "; break;
case log::none: break;
}
else
switch (level)
{
- case log::error: prefix_ = "\033[101m error: "; break;
- case log::warning: prefix_ = "\033[103mwarning: "; break;
- case log::info: prefix_ = " info: "; break;
+ case log::error: prefix_ = "\033[30;101m error: "; break;
+ case log::warning: prefix_ = "\033[30;103mwarning: "; break;
+ case log::info: prefix_ = " info: "; break;
+ case log::debug: prefix_ = "\033[2m debug: "; break;
case log::none: break;
}
}
static std::ofstream null_log_;
std::ostream& null_log(null_log_);
-class log log_error( log::error);
-class log log_warning(log::warning);
-class log log_info( log::info);
+
+// These objects are intentionally not deconstructed so that logging will
+// still be available after this module has been cleaned up.
+class log& log_error(*new class log(log::error));
+class log& log_warning(*new class log(log::warning));
+class log& log_info(*new class log(log::info));
+class log& log_debug(*new class log(log::debug));
static int log_script(script& script, enum log::level level)
{
- static class log* logs[] = {0, &log_error, &log_warning, &log_info};
+ static class log* logs[] = {
+ 0,
+ &log_error,
+ &log_warning,
+ &log_info,
+ &log_debug
+ };
script::slot param = script[1];
boost::bind(log_script, _1, log::info));
script.import_function("print",
boost::bind(log_script, _1, log::info));
+ script.import_function("LogDebug",
+ boost::bind(log_script, _1, log::debug));
}