]>
Dogcows Code - chaz/yoink/blob - log.cc
e59740dd2a00e487f2ace56cc84839d1e395db98
2 /*] Copyright (c) 2009-2010, Charles McGarvey [**************************
3 **] All rights reserved.
7 * Distributable under the terms and conditions of the 2-clause BSD license;
8 * see the file COPYING for a complete text of the license.
10 **************************************************************************/
17 inline int isatty(int dummy
) { return 0; }
28 enum log::level
log::global_level_
= log::info
;
31 void log::level(enum level level
)
33 global_level_
= level
;
36 enum log::level
log::level()
42 log::log(enum level level
) :
48 case log::error
: prefix_
= " error: "; break;
49 case log::warning
: prefix_
= "warning: "; break;
50 case log::info
: prefix_
= " info: "; break;
51 case log::debug
: prefix_
= " debug: "; break;
52 case log::none
: break;
57 case log::error
: prefix_
= "\033[30;101m error: "; break;
58 case log::warning
: prefix_
= "\033[30;103mwarning: "; break;
59 case log::info
: prefix_
= " info: "; break;
60 case log::debug
: prefix_
= "\033[2m debug: "; break;
61 case log::none
: break;
65 std::ostream
& operator << (class log
& log
, log::endl_ endl
)
67 if (log::global_level_
< log
.level_
) return null_log
;
68 if (isatty(1) == 0) return moof::log
<< std::endl
;
69 else return moof::log
<< "\033[0m" << std::endl
;
72 std::ostream
& operator << (std::ostream
& stream
, log::endl_ endl
)
74 if (isatty(1) == 0) return stream
<< std::endl
;
75 else return stream
<< "\033[0m" << std::endl
;
79 std::ostream
& log(std::cout
);
81 static std::ofstream null_log_
;
82 std::ostream
& null_log(null_log_
);
84 class log
log_error(log::error
);
85 class log
log_warning(log::warning
);
86 class log
log_info(log::info
);
87 class log
log_debug(log::debug
);
90 static int log_script(script
& script
, enum log::level level
)
92 static class log
* logs
[] = {0, &log_error
, &log_warning
, &log_info
, &log_debug
};
94 script::slot param
= script
[1];
96 while (!param
.is_none())
98 (*logs
[level
])(param
);
105 void log::import(script
& script
)
107 script
.import_function("LogError",
108 boost::bind(log_script
, _1
, log::error
));
109 script
.import_function("LogWarning",
110 boost::bind(log_script
, _1
, log::warning
));
111 script
.import_function("LogInfo",
112 boost::bind(log_script
, _1
, log::info
));
113 script
.import_function("print",
114 boost::bind(log_script
, _1
, log::info
));
115 script
.import_function("LogDebug",
116 boost::bind(log_script
, _1
, log::debug
));
This page took 0.037 seconds and 3 git commands to generate.