X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2Fmoof%2Flog.cc;h=514649653a4d4fbd1491e597d7527cd2f01eb7b4;hp=e59740dd2a00e487f2ace56cc84839d1e395db98;hb=574af38ed616d1adfa5e6ce35f67cda1f707f89d;hpb=e9a16d767785b1a903a4466ff26265a5f7dae9e5 diff --git a/src/moof/log.cc b/src/moof/log.cc index e59740d..5146496 100644 --- a/src/moof/log.cc +++ b/src/moof/log.cc @@ -1,23 +1,24 @@ -/*] Copyright (c) 2009-2010, Charles McGarvey [************************** +/*] Copyright (c) 2009-2011, Charles McGarvey [***************************** **] All rights reserved. * -* vi:ts=4 sw=4 tw=75 -* * Distributable under the terms and conditions of the 2-clause BSD license; * see the file COPYING for a complete text of the license. * -**************************************************************************/ +*****************************************************************************/ + +#if HAVE_INCLUDE_H +#include "config.h" +#endif #include -#if !defined(__WIN32) +#if PLATFORM_POSIX #include #else inline int isatty(int dummy) { return 0; } #endif - #include "log.hh" #include "script.hh" @@ -38,27 +39,29 @@ enum log::level log::level() return global_level_; } - log::log(enum level level) : level_(level) { if (isatty(1) == 0) switch (level) { - 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; + 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[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; + 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: "; + case log::none: break; } } @@ -66,35 +69,40 @@ std::ostream& operator << (class log& log, log::endl_ endl) { if (log::global_level_ < log.level_) return null_log; if (isatty(1) == 0) return moof::log << std::endl; - else return moof::log << "\033[0m" << std::endl; + return moof::log << "\033[0m" << std::endl; } std::ostream& operator << (std::ostream& stream, log::endl_ endl) { if (isatty(1) == 0) return stream << std::endl; - else return stream << "\033[0m" << std::endl; + return stream << "\033[0m" << std::endl; } - std::ostream& log(std::cout); 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); -class log log_debug(log::debug); - +// 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, &log_debug}; + static class log* logs[] = { + 0, + &log_error, + &log_warning, + &log_info, + &log_debug + }; script::slot param = script[1]; - while (!param.is_none()) - { + while (!param.is_none()) { (*logs[level])(param); ++param.index; } @@ -105,15 +113,15 @@ static int log_script(script& script, enum log::level level) void log::import(script& script) { script.import_function("LogError", - boost::bind(log_script, _1, log::error)); + boost::bind(log_script, _1, log::error)); script.import_function("LogWarning", - boost::bind(log_script, _1, log::warning)); + boost::bind(log_script, _1, log::warning)); script.import_function("LogInfo", - boost::bind(log_script, _1, log::info)); + boost::bind(log_script, _1, log::info)); script.import_function("print", - boost::bind(log_script, _1, log::info)); + boost::bind(log_script, _1, log::info)); script.import_function("LogDebug", - boost::bind(log_script, _1, log::debug)); + boost::bind(log_script, _1, log::debug)); }