diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/common/cli.hpp | 14 | ||||
-rw-r--r-- | src/buildtool/main/main.cpp | 6 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/buildtool/common/cli.hpp b/src/buildtool/common/cli.hpp index 0a8fcf56..6592a02f 100644 --- a/src/buildtool/common/cli.hpp +++ b/src/buildtool/common/cli.hpp @@ -42,7 +42,7 @@ struct CommonArguments { }; struct LogArguments { - std::optional<std::filesystem::path> log_file{}; + std::vector<std::filesystem::path> log_files{}; LogLevel log_limit{kDefaultLogLevel}; bool plain_log{false}; }; @@ -151,9 +151,15 @@ static inline auto SetupCommonArguments( static inline auto SetupLogArguments( gsl::not_null<CLI::App*> const& app, gsl::not_null<LogArguments*> const& clargs) { - app->add_option( - "-f,--log-file", clargs->log_file, "Path to local log file.") - ->type_name("PATH"); + app->add_option_function<std::string>( + "-f,--log-file", + [clargs](auto const& log_file_) { + clargs->log_files.emplace_back(log_file_); + }, + "Path to local log file.") + ->type_name("PATH") + ->trigger_on_parse(); // run callback on all instances while parsing, + // not after all parsing is done app->add_option_function<std::underlying_type_t<LogLevel>>( "--log-limit", [clargs](auto const& limit) { diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp index ded21591..dfa25dd3 100644 --- a/src/buildtool/main/main.cpp +++ b/src/buildtool/main/main.cpp @@ -230,9 +230,9 @@ void SetupDefaultLogging() { void SetupLogging(LogArguments const& clargs) { LogConfig::SetLogLimit(clargs.log_limit); LogConfig::SetSinks({LogSinkCmdLine::CreateFactory(not clargs.plain_log)}); - if (clargs.log_file) { - LogConfig::AddSink(LogSinkFile::CreateFactory( - *clargs.log_file, LogSinkFile::Mode::Overwrite)); + for (auto const& log_file : clargs.log_files) { + LogConfig::AddSink( + LogSinkFile::CreateFactory(log_file, LogSinkFile::Mode::Overwrite)); } } |