blob: 513fa658ff35ba780d48ba759d884e14ce661e7d [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,
Pallavi Madhukar3076d5c2023-09-09 10:23:26 -07007 const aos::Node *node, std::string_view output_folder,
8 bool do_skip_timing_report)
James Kuszmaule4853542023-05-15 20:35:48 -07009 : event_loop_(factory->MakeEventLoop("logger", node)),
10 namer_(std::make_unique<aos::logger::MultiNodeFilesLogNamer>(
James Kuszmaul827bd212023-05-15 23:57:39 -070011 absl::StrCat(output_folder, "/", logger::MaybeNodeName(node), "/"),
James Kuszmaule4853542023-05-15 20:35:48 -070012 event_loop_.get())),
13 logger_(std::make_unique<aos::logger::Logger>(event_loop_.get())) {
Pallavi Madhukar3076d5c2023-09-09 10:23:26 -070014 if (do_skip_timing_report) {
15 event_loop_->SkipTimingReport();
16 }
James Kuszmaule4853542023-05-15 20:35:48 -070017 event_loop_->SkipAosLog();
18 event_loop_->OnRun([this]() { logger_->StartLogging(std::move(namer_)); });
19}
20
21std::vector<std::unique_ptr<LoggerState>> MakeLoggersForNodes(
22 aos::SimulatedEventLoopFactory *factory,
23 const std::vector<std::string> &nodes_to_log,
Pallavi Madhukar3076d5c2023-09-09 10:23:26 -070024 std::string_view output_folder, bool do_skip_timing_report) {
James Kuszmaule4853542023-05-15 20:35:48 -070025 std::vector<std::unique_ptr<LoggerState>> loggers;
26 for (const std::string &node : nodes_to_log) {
27 loggers.emplace_back(std::make_unique<LoggerState>(
28 factory, aos::configuration::GetNode(factory->configuration(), node),
Pallavi Madhukar3076d5c2023-09-09 10:23:26 -070029 output_folder, do_skip_timing_report));
James Kuszmaule4853542023-05-15 20:35:48 -070030 }
31 return loggers;
32}
33
34std::vector<std::unique_ptr<LoggerState>> MakeLoggersForAllNodes(
Pallavi Madhukar3076d5c2023-09-09 10:23:26 -070035 aos::SimulatedEventLoopFactory *factory, std::string_view output_folder,
36 bool do_skip_timing_report) {
James Kuszmaule4853542023-05-15 20:35:48 -070037 std::vector<std::unique_ptr<LoggerState>> loggers;
Philipp Schrader790cb542023-07-05 21:06:52 -070038 for (const aos::Node *node :
39 configuration::GetNodes(factory->configuration())) {
Pallavi Madhukar3076d5c2023-09-09 10:23:26 -070040 loggers.emplace_back(std::make_unique<LoggerState>(
41 factory, node, output_folder, do_skip_timing_report));
James Kuszmaule4853542023-05-15 20:35:48 -070042 }
43 return loggers;
44}
45
46} // namespace aos::util