blob: a3461b50aa1f30cdb2f71cbb40f1e073ab6e03f1 [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
Sarah Newmana7e87932022-04-11 15:00:03 -07003#include "glog/logging.h"
4
Stephan Pleinesf63bde82024-01-13 15:59:33 -08005namespace aos::logging {
Sarah Newmana7e87932022-04-11 15:00:03 -07006
7DynamicLogging::DynamicLogging(aos::EventLoop *event_loop)
8 : application_name_(event_loop->name()) {
9 if (event_loop->GetChannel<DynamicLogCommand>("/aos") == nullptr) {
10 LOG(WARNING) << "Disabling dynamic logger because the DynamicLogCommand "
11 "channel is not configured.";
12 } else {
13 event_loop->MakeWatcher("/aos", [this](const DynamicLogCommand &cmd) {
14 HandleDynamicLogCommand(cmd);
15 });
16 }
17}
18
19void DynamicLogging::HandleDynamicLogCommand(const DynamicLogCommand &command) {
20 // For now we expect someone to do an aos_send at the command line, thecommand
21 // may be malformed.
22 if (!command.has_name() || !command.has_vlog_level()) return;
23
24 if (command.name()->string_view() != application_name_) {
25 return;
26 }
27 if (command.vlog_level() < 0) {
28 return;
29 }
30 FLAGS_v = command.vlog_level();
31}
32
Stephan Pleinesf63bde82024-01-13 15:59:33 -080033} // namespace aos::logging