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