/** * log_msg * @brief Log messages to rtas_errd_log * * @param event reference to event * @param fmt formatted string a la printf() * @param ... additional args a la printf() */ void log_msg(struct event *event, char *fmt, ...) { va_list ap; va_start(ap, fmt); _log_msg(event, fmt, ap); va_end(ap); }
/** * cfg_log * @brief dummy interface for calls to diag_cfg * * @param fmt formatted string a la printf() * @param ... additional args a la printf() */ void cfg_log(char *fmt, ...) { va_list ap; va_start(ap, fmt); _log_msg(NULL, fmt, ap); va_end(ap); }
int log_vmsg(logsrc_t src, int level, const char *msg, va_list ap) { int ret = 0; char buf[2048]; ret = vsnprintf(buf, sizeof(buf) - 1, msg, ap); if (ret > 0) { ret = _log_msg(src, level, buf); } return ret; }
int log_msg(logsrc_t src, int level, const char *msg, ...) { /* Buffer for log message. */ char sbuf[4096]; char *buf = sbuf; int buflen = sizeof(sbuf) - 1; /* Prefix error level. */ const char *prefix = ""; switch (level) { case LOG_DEBUG: prefix = "[debug] "; break; case LOG_INFO: prefix = ""; break; case LOG_NOTICE: prefix = "[notice] "; break; case LOG_WARNING: prefix = "[warning] "; break; case LOG_ERR: prefix = "[error] "; break; case LOG_FATAL: prefix = "[fatal] "; break; default: break; } /* Prepend prefix. */ int plen = strlen(prefix); if (plen > buflen) { return KNOT_ENOMEM; } if (plen > 0) { strncpy(buf, prefix, plen + 1); buf += plen; buflen -= plen; } /* Compile log message. */ int ret = 0; va_list ap; va_start(ap, msg); ret = vsnprintf(buf, buflen, msg, ap); va_end(ap); /* Send to logging facilities. */ if (ret > 0) { ret = _log_msg(src, level, sbuf); } return ret; }
virtual zn_log &log(const std::string &msg) { _log_msg("DEBUG", msg); return *this; }