From 1174c013226e560820f44a637b9744d9606b414a Mon Sep 17 00:00:00 2001 From: Paul Cristian Sarbu Date: Tue, 6 Dec 2022 15:19:36 +0100 Subject: just: Allow multiple log files --- src/buildtool/common/cli.hpp | 14 ++++++++++---- src/buildtool/main/main.cpp | 6 +++--- 2 files changed, 13 insertions(+), 7 deletions(-) (limited to 'src') 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 log_file{}; + std::vector 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 const& app, gsl::not_null const& clargs) { - app->add_option( - "-f,--log-file", clargs->log_file, "Path to local log file.") - ->type_name("PATH"); + app->add_option_function( + "-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>( "--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)); } } -- cgit v1.2.3