Statlog in C (#23596)
* statlog in C
* fix swaglog and the test
* add missing files
* fix context initialization todo
* speed up test
old-commit-hash: 6366d1303f
vw-mqb-aeb
parent
9f202e63f5
commit
c69bba9c9c
8 changed files with 138 additions and 75 deletions
@ -0,0 +1,43 @@ |
|||||||
|
#ifndef _GNU_SOURCE |
||||||
|
#define _GNU_SOURCE |
||||||
|
#endif |
||||||
|
|
||||||
|
#include "selfdrive/common/statlog.h" |
||||||
|
#include "selfdrive/common/util.h" |
||||||
|
|
||||||
|
#include <stdio.h> |
||||||
|
#include <mutex> |
||||||
|
#include <zmq.h> |
||||||
|
|
||||||
|
class StatlogState : public LogState { |
||||||
|
public: |
||||||
|
StatlogState() : LogState("ipc:///tmp/stats") {} |
||||||
|
}; |
||||||
|
|
||||||
|
static StatlogState s = {}; |
||||||
|
|
||||||
|
static void log(const char* metric_type, const char* metric, const char* fmt, ...) { |
||||||
|
char* value_buf = nullptr; |
||||||
|
va_list args; |
||||||
|
va_start(args, fmt); |
||||||
|
int ret = vasprintf(&value_buf, fmt, args); |
||||||
|
va_end(args); |
||||||
|
|
||||||
|
if (ret > 0 && value_buf) { |
||||||
|
char* line_buf = nullptr; |
||||||
|
ret = asprintf(&line_buf, "%s:%s|%s", metric, value_buf, metric_type); |
||||||
|
if (ret > 0 && line_buf) { |
||||||
|
zmq_send(s.sock, line_buf, ret, ZMQ_NOBLOCK); |
||||||
|
free(line_buf); |
||||||
|
} |
||||||
|
free(value_buf); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void statlog_log(const char* metric_type, const char* metric, int value) { |
||||||
|
log(metric_type, metric, "%d", value); |
||||||
|
} |
||||||
|
|
||||||
|
void statlog_log(const char* metric_type, const char* metric, float value) { |
||||||
|
log(metric_type, metric, "%f", value); |
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
#define STATLOG_GAUGE "g" |
||||||
|
#define STATLOG_SAMPLE "sa" |
||||||
|
|
||||||
|
void statlog_log(const char* metric_type, const char* metric, int value); |
||||||
|
void statlog_log(const char* metric_type, const char* metric, float value); |
||||||
|
|
||||||
|
#define statlog_gauge(metric, value) statlog_log(STATLOG_GAUGE, metric, value) |
||||||
|
#define statlog_sample(metric, value) statlog_log(STATLOG_SAMPLE, metric, value) |
Loading…
Reference in new issue