// clean-up our ncurses window before throwing a fatal error static void log_fatal(const gchar *dom, GLogLevelFlags level, const gchar *msg, gpointer dat) { endwin(); // print to both log file and stdout if(stderrlog != stderr) { fprintf(stderrlog, "\n\n*%s* %s\n", loglevel_to_str(level), msg); fflush(stderrlog); } printf("\n\n*%s* %s\n", loglevel_to_str(level), msg); }
static int node_log_level_get(int argc, char **argv) { int ret = 0, loglevel = -1; struct node_id nid; memset(&nid, 0, sizeof(nid)); memcpy(nid.addr, sdhost, sizeof(sdhost)); nid.port = sdport; ret = do_loglevel_get(&nid, &loglevel); switch (ret) { case EXIT_FAILURE: case EXIT_SYSFAIL: sd_err("Failed to execute request"); ret = -1; break; case EXIT_SUCCESS: sd_info("%s (%d)", loglevel_to_str(loglevel), loglevel); break; default: sd_err("unknown return code of do_loglevel_get(): %d", ret); ret = -1; break; } return ret; }
// redirect all non-fatal errors to the log static void log_redirect(const gchar *dom, GLogLevelFlags level, const gchar *msg, gpointer dat) { if(!(level & (G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG)) || (stderrlog != stderr && var_log_debug)) { char *ts = localtime_fmt("[%F %H:%M:%S %Z]"); fprintf(stderrlog, "%s *%s* %s\n", ts, loglevel_to_str(level), msg); g_free(ts); fflush(stderrlog); } }
void rblog(enum rblog_levels log_level, char *msg) { if (log_level <= rblog_level) { char *term_color; if (log_level == RBLOG_ERROR) { term_color = TERM_RED; } if (log_level == RBLOG_WARN) { term_color = TERM_CYN; } if (log_level == RBLOG_INFO) { term_color = TERM_GRN; } if (log_level == RBLOG_DEBUG) { term_color = TERM_LGY; } fprintf(stderr, "%s%s: %s\n%s", term_color, loglevel_to_str(log_level), msg, TERM_NRM); } }