blob: e4599789f25005101375392367128973c489ca0b [file] [log] [blame]
James Kuszmaule4853542023-05-15 20:35:48 -07001#include "aos/util/simulation_logger.h"
2
3namespace aos::util {
4LoggerState::LoggerState(aos::SimulatedEventLoopFactory *factory,
5 const aos::Node *node, std::string_view output_folder)
6 : event_loop_(factory->MakeEventLoop("logger", node)),
7 namer_(std::make_unique<aos::logger::MultiNodeFilesLogNamer>(
8 absl::StrCat(output_folder, "/", node->name()->string_view(), "/"),
9 event_loop_.get())),
10 logger_(std::make_unique<aos::logger::Logger>(event_loop_.get())) {
11 event_loop_->SkipTimingReport();
12 event_loop_->SkipAosLog();
13 event_loop_->OnRun([this]() { logger_->StartLogging(std::move(namer_)); });
14}
15
16std::vector<std::unique_ptr<LoggerState>> MakeLoggersForNodes(
17 aos::SimulatedEventLoopFactory *factory,
18 const std::vector<std::string> &nodes_to_log,
19 std::string_view output_folder) {
20 std::vector<std::unique_ptr<LoggerState>> loggers;
21 for (const std::string &node : nodes_to_log) {
22 loggers.emplace_back(std::make_unique<LoggerState>(
23 factory, aos::configuration::GetNode(factory->configuration(), node),
24 output_folder));
25 }
26 return loggers;
27}
28
29std::vector<std::unique_ptr<LoggerState>> MakeLoggersForAllNodes(
30 aos::SimulatedEventLoopFactory *factory, std::string_view output_folder) {
31 std::vector<std::unique_ptr<LoggerState>> loggers;
32 for (const aos::Node *node : configuration::GetNodes(factory->configuration())) {
33 loggers.emplace_back(
34 std::make_unique<LoggerState>(factory, node, output_folder));
35 }
36 return loggers;
37}
38
39} // namespace aos::util