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