@@ -28,6 +28,25 @@ limitations under the License.
2828#include < photon/common/conststr.h>
2929#include < photon/common/retval.h>
3030
31+ #define ALOG_COLOR_RESET " \033 [0m"
32+ #define ALOG_COLOR_BLACK " \033 [30m"
33+ #define ALOG_COLOR_RED " \033 [31m"
34+ #define ALOG_COLOR_GREEN " \033 [32m"
35+ #define ALOG_COLOR_YELLOW " \033 [33m"
36+ #define ALOG_COLOR_BLUE " \033 [34m"
37+ #define ALOG_COLOR_MAGENTA " \033 [35m"
38+ #define ALOG_COLOR_CYAN " \033 [36m"
39+ #define ALOG_COLOR_LIGHTGRAY " \033 [37m"
40+ #define ALOG_COLOR_DARKGRAY " \033 [90m"
41+ #define ALOG_COLOR_LIGHTRED " \033 [91m"
42+ #define ALOG_COLOR_LIGHTGREEN " \033 [92m"
43+ #define ALOG_COLOR_LIGHTYELLOW " \033 [93m"
44+ #define ALOG_COLOR_LIGHTBLUE " \033 [94m"
45+ #define ALOG_COLOR_LIGHTMAGENTA " \033 [95m"
46+ #define ALOG_COLOR_LIGHTCYAN " \033 [96m"
47+ #define ALOG_COLOR_LIGHTWHITE " \033 [97m"
48+ #define ALOG_COLOR_NOTHING " "
49+
3150class ILogOutput {
3251protected:
3352 // output object should be destructed via `destruct()`
@@ -40,6 +59,11 @@ class ILogOutput {
4059 virtual uint64_t set_throttle (uint64_t t = -1UL ) = 0;
4160 virtual uint64_t get_throttle () = 0;
4261 virtual void destruct () = 0;
62+ virtual void set_level_color (int level, const char * color) {
63+ // not implemented by default
64+ }
65+ void preset_color ();
66+ void clear_color ();
4367};
4468
4569extern ILogOutput * const log_output_null;
@@ -201,6 +225,25 @@ struct ALogBuffer
201225#define ALOG_TEMP 5
202226#define ALOG_AUDIT 6
203227
228+ inline void ILogOutput::preset_color () {
229+ set_level_color (ALOG_DEBUG , ALOG_COLOR_DARKGRAY );
230+ set_level_color (ALOG_INFO , ALOG_COLOR_RESET );
231+ set_level_color (ALOG_WARN , ALOG_COLOR_YELLOW );
232+ set_level_color (ALOG_ERROR , ALOG_COLOR_RED );
233+ set_level_color (ALOG_FATAL , ALOG_COLOR_MAGENTA );
234+ set_level_color (ALOG_TEMP , ALOG_COLOR_CYAN );
235+ set_level_color (ALOG_AUDIT , ALOG_COLOR_GREEN );
236+ }
237+ inline void ILogOutput::clear_color () {
238+ set_level_color (ALOG_DEBUG , ALOG_COLOR_NOTHING );
239+ set_level_color (ALOG_INFO , ALOG_COLOR_NOTHING );
240+ set_level_color (ALOG_WARN , ALOG_COLOR_NOTHING );
241+ set_level_color (ALOG_ERROR , ALOG_COLOR_NOTHING );
242+ set_level_color (ALOG_FATAL , ALOG_COLOR_NOTHING );
243+ set_level_color (ALOG_TEMP , ALOG_COLOR_NOTHING );
244+ set_level_color (ALOG_AUDIT , ALOG_COLOR_NOTHING );
245+ }
246+
204247class LogFormatter
205248{
206249public:
0 commit comments