2021-08-25 15:20:11 +00:00
|
|
|
#include <stdarg.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <errno.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
#include "log.hpp"
|
|
|
|
|
|
|
|
LogScope::LogScope(const char *name) {
|
|
|
|
this->name = name;
|
2021-08-25 15:33:16 +00:00
|
|
|
this->priority = LOG_DEBUG;
|
|
|
|
}
|
|
|
|
|
|
|
|
LogScope::LogScope(const char *name, enum LogPriority priority) {
|
|
|
|
this->name = name;
|
|
|
|
this->priority = priority;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool LogScope::has(enum LogPriority priority) {
|
|
|
|
return priority <= this->priority;
|
2021-08-25 15:20:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void LogScope::vprintf(enum LogPriority priority, const char *fmt, va_list args) {
|
2021-08-25 15:33:16 +00:00
|
|
|
if (!this->has(priority)) {
|
|
|
|
return;
|
|
|
|
}
|
2021-08-25 15:20:11 +00:00
|
|
|
fprintf(stderr, "%s: ", this->name);
|
|
|
|
vfprintf(stderr, fmt, args);
|
|
|
|
}
|
|
|
|
|
|
|
|
void LogScope::vlogf(enum LogPriority priority, const char *fmt, va_list args) {
|
2021-08-25 15:33:16 +00:00
|
|
|
if (!this->has(priority)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
this->vprintf(priority, fmt, args);
|
2021-08-25 15:20:11 +00:00
|
|
|
fprintf(stderr, "\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
void LogScope::errorf(const char *fmt, ...) {
|
|
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
|
|
this->vlogf(LOG_ERROR, fmt, args);
|
|
|
|
va_end(args);
|
|
|
|
}
|
|
|
|
|
|
|
|
void LogScope::infof(const char *fmt, ...) {
|
|
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
|
|
this->vlogf(LOG_INFO, fmt, args);
|
|
|
|
va_end(args);
|
|
|
|
}
|
|
|
|
|
|
|
|
void LogScope::debugf(const char *fmt, ...) {
|
|
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
|
|
this->vlogf(LOG_DEBUG, fmt, args);
|
|
|
|
va_end(args);
|
|
|
|
}
|
|
|
|
|
|
|
|
void LogScope::errorf_errno(const char *fmt, ...) {
|
2021-08-25 15:33:16 +00:00
|
|
|
if (!this->has(LOG_ERROR)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2021-08-25 15:20:11 +00:00
|
|
|
const char *err = strerror(errno);
|
|
|
|
|
|
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
|
|
this->vprintf(LOG_ERROR, fmt, args);
|
|
|
|
va_end(args);
|
|
|
|
|
|
|
|
fprintf(stderr, ": %s\n", err);
|
|
|
|
}
|