wslog: Format and color amendments

This commit is contained in:
João Valverde 2021-06-20 20:29:46 +01:00
parent 64155132ea
commit 585ddc9283
1 changed files with 48 additions and 21 deletions

View File

@ -589,14 +589,38 @@ void ws_log_init_with_data(const char *progname, ws_log_writer_cb *writer,
} }
static inline const char *color_on(gboolean enable) #define MAGENTA "\033[35m"
#define BLUE "\033[34m"
#define CYAN "\033[36m"
#define GREEN "\033[32m"
#define YELLOW "\033[33m"
#define RED "\033[31m"
#define RESET "\033[0m"
static inline const char *msg_color_on(gboolean enable, enum ws_log_level level)
{ {
return enable ? "\033[34m" : ""; /* blue */ if (!enable)
return "";
if (level <= LOG_LEVEL_NOISY)
return MAGENTA;
else if (level <= LOG_LEVEL_DEBUG)
return GREEN;
else if (level <= LOG_LEVEL_INFO)
return CYAN;
else if (level <= LOG_LEVEL_MESSAGE)
return BLUE;
else if (level <= LOG_LEVEL_WARNING)
return YELLOW;
else if (level <= LOG_LEVEL_ERROR)
return RED;
else
ws_assert_not_reached();
} }
static inline const char *color_off(gboolean enable) static inline const char *color_off(gboolean enable)
{ {
return enable ? "\033[0m" : ""; return enable ? RESET : "";
} }
static void log_write_do_work(FILE *fp, gboolean use_color, const char *timestamp, static void log_write_do_work(FILE *fp, gboolean use_color, const char *timestamp,
@ -614,31 +638,34 @@ static void log_write_do_work(FILE *fp, gboolean use_color, const char *timestam
} }
#endif #endif
if (doextra) /* Process name */
fprintf(fp, " ** (%s:%ld) ", registered_progname, (long)getpid()); fprintf(fp, " ** (%s:%ld) ", registered_progname, (long)getpid());
else
fputs(" ** ", fp);
if (timestamp) { /* Timestamp */
if (timestamp != NULL) {
fputs(timestamp, fp); fputs(timestamp, fp);
fputc(' ', fp); fputc(' ', fp);
} }
fprintf(fp, "[%s-%s] ", domain_str, level_str); /* Message priority (domain/level) */
fprintf(fp, "[%s%s%s %s] ", msg_color_on(use_color, level),
level_str,
color_off(use_color),
domain_str);
if (doextra) { /* File/line */
if (file && line >= 0) { if (doextra && file != NULL && line >= 0)
fprintf(fp, "%s:%d ", file, line); fprintf(fp, "%s:%d ", file, line);
} else if (doextra && file != NULL)
else if (file) { fprintf(fp, "%s ", file);
fprintf(fp, "%s ", file);
}
fputs("-- ", fp);
if (func) {
fprintf(fp, "%s%s()%s: " , color_on(use_color), func, color_off(use_color));
}
}
fputs("-- ", fp);
/* Function name */
if (doextra && func != NULL)
fprintf(fp, "%s(): ", func);
/* User message */
vfprintf(fp, user_format, user_ap); vfprintf(fp, user_format, user_ap);
fputc('\n', fp); fputc('\n', fp);
fflush(fp); fflush(fp);