mirror of
https://github.com/MoreTore/openpilot.git
synced 2026-09-30 03:13:53 +08:00
df8476118b
* msg_order and gantt
* frameId in long/lat planner
* track frame id
* controls frame id
* graph tracked events
* graph json
* cloudlog timestamp
* c++ cloudlog
* add frame id
* bug fixes
* bug fixes
* frame id visionicp
* bug fixes and debug level
* timestamp log placement
* print timestamps in table
* translate events
* more logging
* bug fixes
* daemon boardd
* print logs with boardd
* more timestamp logs
* cleanup
* remove publish logs
* bug fix
* timestamp received
* timestamp received
* bug fixes
* use json lib
* ignore driver camera
* prep for new timestamp pipeline
* bug fix
* read new pipeline unfinnished
* read new pipeline
* bug fix
* add frame to controlsstate
* remove controlsstate
* print
* cleanup
* more cleanup + bug fix
* clock build issue
* remove unused imports
* format durations
* increase speed
* pr comments fixes
* conflicts
* set MANAGER_DAEMON for boardd
* clean script code
* bug fix + argparse
* remove rcv time
* bug fixes
* print without tabulate
* fix pre-commits
* plot gnatt
* color bug fix
* read without timestampextra
* bump panda
* mono time instead of frame id
* finnish script
* clean unused
* clean unused logging
* monotonic + json fixes
* del test
* remove whilelines
* bump laika
* cleanup
* remove deps
* logs nicer strings
* remove plotting from scirpt
* reset pipfile
* reset pipfile
* nicer strings
* bug fix
* bug fix
* pr comments cleaning
* remove plotting
* bug fix
* new demo route
* bump opendbc and panda
* cereal master
* cereal master
* script less komplex
* assertions
* matplotlib
* readme
* Update README.md
* graph html
* design fixes
* more code design
* Update common/logging_extra.py
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* whitespace
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* Update tools/latency_logger/latency_logger.py
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* pr comments
* bug fix
* readme + env once
* clean swaglog
* bug fix
* Update tools/latencylogger/README.md
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* revert
* revert
* clean swaglog with error
* remove typo file
* revert graph
* cereal
* submodules
* whitespaces
* update refs
Co-authored-by: Bruce Wayne <batman@workstation-openpilot2.internal>
Co-authored-by: Comma Device <device@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: 65fca83abe
127 lines
3.3 KiB
C++
127 lines
3.3 KiB
C++
#ifndef _GNU_SOURCE
|
|
#define _GNU_SOURCE
|
|
#endif
|
|
|
|
#include "selfdrive/common/swaglog.h"
|
|
|
|
#include <cassert>
|
|
#include <cstring>
|
|
#include <mutex>
|
|
#include <string>
|
|
|
|
#include <zmq.h>
|
|
#include "json11.hpp"
|
|
|
|
#include "selfdrive/common/util.h"
|
|
#include "selfdrive/common/version.h"
|
|
#include "selfdrive/hardware/hw.h"
|
|
|
|
class SwaglogState : public LogState {
|
|
public:
|
|
SwaglogState() : LogState("ipc:///tmp/logmessage") {}
|
|
|
|
bool initialized = false;
|
|
json11::Json::object ctx_j;
|
|
|
|
inline void initialize() {
|
|
ctx_j = json11::Json::object {};
|
|
print_level = CLOUDLOG_WARNING;
|
|
const char* print_lvl = getenv("LOGPRINT");
|
|
if (print_lvl) {
|
|
if (strcmp(print_lvl, "debug") == 0) {
|
|
print_level = CLOUDLOG_DEBUG;
|
|
} else if (strcmp(print_lvl, "info") == 0) {
|
|
print_level = CLOUDLOG_INFO;
|
|
} else if (strcmp(print_lvl, "warning") == 0) {
|
|
print_level = CLOUDLOG_WARNING;
|
|
}
|
|
}
|
|
|
|
// openpilot bindings
|
|
char* dongle_id = getenv("DONGLE_ID");
|
|
if (dongle_id) {
|
|
ctx_j["dongle_id"] = dongle_id;
|
|
}
|
|
char* daemon_name = getenv("MANAGER_DAEMON");
|
|
if (daemon_name) {
|
|
ctx_j["daemon"] = daemon_name;
|
|
}
|
|
ctx_j["version"] = COMMA_VERSION;
|
|
ctx_j["dirty"] = !getenv("CLEAN");
|
|
|
|
// device type
|
|
if (Hardware::EON()) {
|
|
ctx_j["device"] = "eon";
|
|
} else if (Hardware::TICI()) {
|
|
ctx_j["device"] = "tici";
|
|
} else {
|
|
ctx_j["device"] = "pc";
|
|
}
|
|
|
|
initialized = true;
|
|
}
|
|
};
|
|
|
|
static SwaglogState s = {};
|
|
bool LOG_TIMESTAMPS = getenv("LOG_TIMESTAMPS");
|
|
|
|
static void log(int levelnum, const char* filename, int lineno, const char* func, const char* msg, const std::string& log_s) {
|
|
if (levelnum >= s.print_level) {
|
|
printf("%s: %s\n", filename, msg);
|
|
}
|
|
char levelnum_c = levelnum;
|
|
zmq_send(s.sock, (levelnum_c + log_s).c_str(), log_s.length() + 1, ZMQ_NOBLOCK);
|
|
}
|
|
static void cloudlog_common(int levelnum, bool is_timestamp, const char* filename, int lineno, const char* func,
|
|
const char* fmt, va_list args) {
|
|
char* msg_buf = nullptr;
|
|
int ret = vasprintf(&msg_buf, fmt, args);
|
|
if (ret <= 0 || !msg_buf) return;
|
|
|
|
std::lock_guard lk(s.lock);
|
|
|
|
if (!s.initialized) s.initialize();
|
|
|
|
json11::Json::object log_j = json11::Json::object {
|
|
{"ctx", s.ctx_j},
|
|
{"levelnum", levelnum},
|
|
{"filename", filename},
|
|
{"lineno", lineno},
|
|
{"funcname", func},
|
|
{"created", seconds_since_epoch()}
|
|
};
|
|
|
|
if (is_timestamp) {
|
|
json11::Json::object tspt_j = json11::Json::object {
|
|
{"timestamp", json11::Json::object{
|
|
{"event", msg_buf},
|
|
{"time", std::to_string(nanos_since_boot())}}
|
|
}
|
|
};
|
|
log_j["msg"] = tspt_j;
|
|
} else {
|
|
log_j["msg"] = msg_buf;
|
|
}
|
|
|
|
std::string log_s = ((json11::Json)log_j).dump();
|
|
log(levelnum, filename, lineno, func, msg_buf, log_s);
|
|
free(msg_buf);
|
|
}
|
|
|
|
void cloudlog_e(int levelnum, const char* filename, int lineno, const char* func,
|
|
const char* fmt, ...){
|
|
va_list args;
|
|
va_start(args, fmt);
|
|
cloudlog_common(levelnum, false, filename, lineno, func, fmt, args);
|
|
va_end(args);
|
|
}
|
|
|
|
void cloudlog_t(int levelnum, const char* filename, int lineno, const char* func,
|
|
const char* fmt, ...){
|
|
if (!LOG_TIMESTAMPS) return;
|
|
va_list args;
|
|
va_start(args, fmt);
|
|
cloudlog_common(levelnum, true, filename, lineno, func, fmt, args);
|
|
va_end(args);
|
|
}
|