blob: 4ed4ea3f3205d0e731a55ed13c45a3ba51b3e8f8 [file] [log] [blame]
Sarah Newmana7e87932022-04-11 15:00:03 -07001#include "aos/logging/dynamic_logging.h"
Austin Schuh60e77942022-05-16 17:48:24 -07002
Stephan Pleines0960c262024-05-31 20:29:24 -07003#include <ostream>
4#include <string_view>
5
Austin Schuh99f7c6a2024-06-25 22:07:44 -07006#include "absl/log/check.h"
7#include "absl/log/globals.h"
8#include "absl/log/log.h"
Stephan Pleines0960c262024-05-31 20:29:24 -07009#include "flatbuffers/string.h"
Sarah Newmana7e87932022-04-11 15:00:03 -070010
Stephan Pleinesf63bde82024-01-13 15:59:33 -080011namespace aos::logging {
Sarah Newmana7e87932022-04-11 15:00:03 -070012
13DynamicLogging::DynamicLogging(aos::EventLoop *event_loop)
14 : application_name_(event_loop->name()) {
15 if (event_loop->GetChannel<DynamicLogCommand>("/aos") == nullptr) {
16 LOG(WARNING) << "Disabling dynamic logger because the DynamicLogCommand "
17 "channel is not configured.";
18 } else {
19 event_loop->MakeWatcher("/aos", [this](const DynamicLogCommand &cmd) {
20 HandleDynamicLogCommand(cmd);
21 });
22 }
23}
24
25void DynamicLogging::HandleDynamicLogCommand(const DynamicLogCommand &command) {
26 // For now we expect someone to do an aos_send at the command line, thecommand
27 // may be malformed.
28 if (!command.has_name() || !command.has_vlog_level()) return;
29
30 if (command.name()->string_view() != application_name_) {
31 return;
32 }
33 if (command.vlog_level() < 0) {
34 return;
35 }
Austin Schuh99f7c6a2024-06-25 22:07:44 -070036 absl::SetGlobalVLogLevel(command.vlog_level());
Sarah Newmana7e87932022-04-11 15:00:03 -070037}
38
Stephan Pleinesf63bde82024-01-13 15:59:33 -080039} // namespace aos::logging