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