parent
79e05965c4
commit
c283be24d3
|
@ -11,20 +11,27 @@
|
|||
|
||||
#include "json11.hpp"
|
||||
|
||||
#include "common/timing.h"
|
||||
#include "common/util.h"
|
||||
#include "common/version.h"
|
||||
|
||||
#include "swaglog.h"
|
||||
|
||||
typedef struct LogState {
|
||||
class LogState {
|
||||
public:
|
||||
LogState() = default;
|
||||
~LogState();
|
||||
std::mutex lock;
|
||||
bool inited;
|
||||
json11::Json::object ctx_j;
|
||||
void *zctx;
|
||||
void *sock;
|
||||
int print_level;
|
||||
} LogState;
|
||||
};
|
||||
|
||||
LogState::~LogState() {
|
||||
zmq_close(sock);
|
||||
zmq_ctx_destroy(zctx);
|
||||
}
|
||||
|
||||
static LogState s = {};
|
||||
|
||||
|
@ -71,24 +78,26 @@ static void cloudlog_init() {
|
|||
s.inited = true;
|
||||
}
|
||||
|
||||
void cloudlog_e(int levelnum, const char* filename, int lineno, const char* func,
|
||||
const char* fmt, ...) {
|
||||
void log(int levelnum, const char* filename, int lineno, const char* func, const char* msg, const std::string& log_s) {
|
||||
std::lock_guard lk(s.lock);
|
||||
cloudlog_init();
|
||||
if (levelnum >= s.print_level) {
|
||||
printf("%s: %s\n", filename, msg);
|
||||
}
|
||||
char levelnum_c = levelnum;
|
||||
zmq_send(s.sock, &levelnum_c, 1, ZMQ_NOBLOCK | ZMQ_SNDMORE);
|
||||
zmq_send(s.sock, log_s.c_str(), log_s.length(), ZMQ_NOBLOCK);
|
||||
}
|
||||
|
||||
char* msg_buf = NULL;
|
||||
void cloudlog_e(int levelnum, const char* filename, int lineno, const char* func,
|
||||
const char* fmt, ...) {
|
||||
char* msg_buf = nullptr;
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
vasprintf(&msg_buf, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
if (!msg_buf) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (levelnum >= s.print_level) {
|
||||
printf("%s: %s\n", filename, msg_buf);
|
||||
}
|
||||
if (!msg_buf) return;
|
||||
|
||||
json11::Json log_j = json11::Json::object {
|
||||
{"msg", msg_buf},
|
||||
|
@ -99,15 +108,9 @@ void cloudlog_e(int levelnum, const char* filename, int lineno, const char* func
|
|||
{"funcname", func},
|
||||
{"created", seconds_since_epoch()}
|
||||
};
|
||||
|
||||
std::string log_s = log_j.dump();
|
||||
|
||||
log(levelnum, filename, lineno, func, msg_buf, log_s);
|
||||
free(msg_buf);
|
||||
|
||||
char levelnum_c = levelnum;
|
||||
zmq_send(s.sock, &levelnum_c, 1, ZMQ_NOBLOCK | ZMQ_SNDMORE);
|
||||
zmq_send(s.sock, log_s.c_str(), log_s.length(), ZMQ_NOBLOCK);
|
||||
|
||||
}
|
||||
|
||||
void cloudlog_bind(const char* k, const char* v) {
|
||||
|
|
Loading…
Reference in New Issue