The server can start with the verbosity level flag
This is useful when the server restarts. The restart handler
may be faciliated by the new selector flags, --verbosity.
Bug: 282081852
Test: cvd --verbosity=DEBUG reset -y
Test: cvd --verbosity=DEBUG version
Test: cvd --verbosity=DEBUG
Test: cvd --verbosity=DEBUG --help
Test: cvd --verbosity=DEBUG --disable_default_group=true start
Change-Id: I733a2f7d06e0eff8ec40453ae1bc40eff409a60a
diff --git a/host/commands/cvd/main.cc b/host/commands/cvd/main.cc
index c323f99..b7069bb 100644
--- a/host/commands/cvd/main.cc
+++ b/host/commands/cvd/main.cc
@@ -209,6 +209,7 @@
.carryover_client_fd = parsed.carryover_client_fd,
.memory_carryover_fd = parsed.memory_carryover_fd,
.carryover_stderr_fd = parsed.carryover_stderr_fd,
+ .verbosity_level = parsed.verbosity_level,
.acloud_translator_optout = parsed.acloud_translator_optout});
}
diff --git a/host/commands/cvd/run_server.cpp b/host/commands/cvd/run_server.cpp
index b2fd379..932f8a2 100644
--- a/host/commands/cvd/run_server.cpp
+++ b/host/commands/cvd/run_server.cpp
@@ -42,8 +42,17 @@
std::unique_ptr<ServerLogger::ScopedLogger> scoped_logger;
if (params.carryover_stderr_fd->IsOpen()) {
- scoped_logger = std::make_unique<ServerLogger::ScopedLogger>(std::move(
- CF_EXPECT(server_logger->LogThreadToFd(params.carryover_stderr_fd))));
+ const auto& verbosity_level = params.verbosity_level;
+ if (!EncodeVerbosity(verbosity_level).ok()) {
+ LOG(ERROR) << "Failed to set verbosity level \"" << verbosity_level
+ << "\"";
+ scoped_logger = std::make_unique<ServerLogger::ScopedLogger>(std::move(
+ CF_EXPECT(server_logger->LogThreadToFd(params.carryover_stderr_fd))));
+ } else {
+ scoped_logger = std::make_unique<ServerLogger::ScopedLogger>(
+ std::move(CF_EXPECT(server_logger->LogThreadToFd(
+ params.carryover_stderr_fd, verbosity_level))));
+ }
}
if (params.memory_carryover_fd && !(*params.memory_carryover_fd)->IsOpen()) {
LOG(ERROR) << "Memory carryover file is supposed to be open but is not.";
@@ -71,6 +80,10 @@
SharedFD memory_carryover_fd;
flags.emplace_back(
SharedFDFlag("INTERNAL_memory_carryover_fd", memory_carryover_fd));
+ // the server's default verbosity must be VERBOSE, the least LogSeverity
+ // the LogSeverity control will be done later on by the server by masking
+ std::string verbosity = "VERBOSE";
+ flags.emplace_back(GflagsCompatFlag("verbosity", verbosity));
CF_EXPECT(ParseFlags(flags, all_args));
// now the three flags above are all consumed from all_args
@@ -96,6 +109,7 @@
.memory_carryover_fd = memory_carryover_fd_opt,
.carryover_stderr_fd = carryover_stderr_fd,
.acloud_translator_optout = acloud_translator_optout_opt,
+ .verbosity_level = verbosity,
};
return {result};
}
diff --git a/host/commands/cvd/run_server.h b/host/commands/cvd/run_server.h
index dbd48d3..0933e01 100644
--- a/host/commands/cvd/run_server.h
+++ b/host/commands/cvd/run_server.h
@@ -42,6 +42,7 @@
*
*/
SharedFD carryover_stderr_fd;
+ std::string verbosity_level;
std::optional<bool> acloud_translator_optout;
};
Result<void> RunServer(const RunServerParam& params);
@@ -52,6 +53,7 @@
std::optional<SharedFD> memory_carryover_fd;
SharedFD carryover_stderr_fd;
std::optional<bool> acloud_translator_optout;
+ std::string verbosity_level;
};
Result<ParseResult> ParseIfServer(cvd_common::Args& all_args);
diff --git a/host/commands/cvd/server_command/restart.cpp b/host/commands/cvd/server_command/restart.cpp
index 3116be3..c82cfdd 100644
--- a/host/commands/cvd/server_command/restart.cpp
+++ b/host/commands/cvd/server_command/restart.cpp
@@ -102,6 +102,12 @@
}
Result<cvd::Response> Handle(const RequestWithStdio& request) override {
+ /*
+ * TODO(weihsu@): change the code accordingly per verbosity level control.
+ *
+ * Now, the server can start with a verbosity level. Change the code
+ * accordingly.
+ */
CF_EXPECT(CanHandle(request));
cvd::Response response;
if (request.Message().has_shutdown_request()) {