libutil: disable direct access to logger verbosity
that way we can sync it with rust for nearly free. Change-Id: Ib3f1e0335884e077a0293f4b13c5919297748522
This commit is contained in:
@@ -362,7 +362,7 @@ static int main_build_remote(AsyncIoRoot & aio, std::string programName, Strings
|
||||
if (argv.size() != 1)
|
||||
throw UsageError("called without required arguments");
|
||||
|
||||
verbosity = (Verbosity) std::stoll(argv.front());
|
||||
setVerbosity((Verbosity) std::stoll(argv.front()));
|
||||
|
||||
auto conn = aio.kj.lowLevelProvider->wrapUnixSocketFd(1);
|
||||
capnp::TwoPartyServer srv(kj::heap<Instance>());
|
||||
|
||||
@@ -35,7 +35,7 @@ static int main_builtin_builder(AsyncIoRoot & aio, std::string programName, Stri
|
||||
};
|
||||
|
||||
if (auto val = string2Int<int>(getArg("verbosity"))) {
|
||||
verbosity = verbosityFromIntClamped(*val);
|
||||
setVerbosity(verbosityFromIntClamped(*val));
|
||||
} else {
|
||||
throw Error("expected a verbosity argument");
|
||||
}
|
||||
|
||||
@@ -948,7 +948,7 @@ opServe(std::shared_ptr<Store> store, AsyncIoRoot & aio, Strings opFlags, String
|
||||
auto getBuildSettings = [&]() {
|
||||
// FIXME: changing options here doesn't work if we're
|
||||
// building through the daemon.
|
||||
verbosity = lvlError;
|
||||
setVerbosity(lvlError);
|
||||
settings.keepLog.override(false);
|
||||
settings.useSubstitutes.override(false);
|
||||
settings.maxSilentTime.override(readNum<unsigned>(in));
|
||||
|
||||
@@ -16,21 +16,21 @@ MixCommonArgs::MixCommonArgs(const std::string & programName)
|
||||
.shortName = 'v',
|
||||
.description = "Increase the logging verbosity level.",
|
||||
.category = loggingCategory,
|
||||
.handler = {[]() { verbosity = verbosityFromIntClamped(int(verbosity) + 1); }},
|
||||
.handler = {[]() { setVerbosity(verbosityFromIntClamped(int(getVerbosity()) + 1)); }},
|
||||
});
|
||||
|
||||
addFlag({
|
||||
.longName = "quiet",
|
||||
.description = "Decrease the logging verbosity level.",
|
||||
.category = loggingCategory,
|
||||
.handler = {[]() { verbosity = verbosityFromIntClamped(int(verbosity) - 1); }},
|
||||
.handler = {[]() { setVerbosity(verbosityFromIntClamped(int(getVerbosity()) - 1)); }},
|
||||
});
|
||||
|
||||
addFlag({
|
||||
.longName = "debug",
|
||||
.description = "Set the logging verbosity level to 'debug'.",
|
||||
.category = loggingCategory,
|
||||
.handler = {[]() { verbosity = lvlDebug; }},
|
||||
.handler = {[]() { setVerbosity(lvlDebug); }},
|
||||
});
|
||||
|
||||
addFlag({
|
||||
|
||||
@@ -106,7 +106,7 @@ bool ProgressBar::isVerbose()
|
||||
|
||||
Logger::BufferState ProgressBar::log(Verbosity lvl, std::string_view s)
|
||||
{
|
||||
if (lvl > verbosity) {
|
||||
if (lvl > getVerbosity()) {
|
||||
return BufferState::HasSpace;
|
||||
}
|
||||
auto state(state_.lock());
|
||||
@@ -142,8 +142,9 @@ Logger::BufferState ProgressBar::startActivityImpl(
|
||||
{
|
||||
auto state(state_.lock());
|
||||
|
||||
if (lvl <= verbosity && !s.empty() && type != actBuildWaiting)
|
||||
if (lvl <= getVerbosity() && !s.empty() && type != actBuildWaiting) {
|
||||
(void) log(*state, lvl, s + "...");
|
||||
}
|
||||
|
||||
state->activities.emplace_back(ActInfo {
|
||||
.s = s,
|
||||
|
||||
@@ -75,7 +75,7 @@ try {
|
||||
|
||||
auto buildHook = canonPath(buildHookArgs.front());
|
||||
buildHookArgs.emplace(std::next(buildHookArgs.begin()), baseNameOf(buildHook));
|
||||
buildHookArgs.push_back(std::to_string(verbosity));
|
||||
buildHookArgs.push_back(std::to_string(getVerbosity()));
|
||||
|
||||
/* Create the communication pipes. */
|
||||
auto [selfRPC, hookRPC] = SocketPair::stream();
|
||||
|
||||
@@ -897,7 +897,7 @@ try {
|
||||
|
||||
if (drv->isBuiltin()) {
|
||||
args.push_back("builtin-builder");
|
||||
args.push_back(std::to_string(verbosity));
|
||||
args.push_back(std::to_string(getVerbosity()));
|
||||
|
||||
std::map<std::string, AbstractConfig::SettingInfo> changedSettings;
|
||||
globalConfig.getChangedSettings(changedSettings);
|
||||
@@ -984,7 +984,7 @@ try {
|
||||
auto groups = buildUser->getSupplementaryGIDs();
|
||||
creds.setSupplementaryGroups({groups.data(), groups.size()});
|
||||
}
|
||||
request.setDebug(verbosity >= lvlDebug);
|
||||
request.setDebug(getVerbosity() >= lvlDebug);
|
||||
|
||||
fillBuilderConfig(request);
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ struct TunnelLogger : public Logger
|
||||
|
||||
BufferState log(Verbosity lvl, std::string_view s) override
|
||||
{
|
||||
if (lvl > verbosity) {
|
||||
if (lvl > getVerbosity()) {
|
||||
return BufferState::HasSpace;
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ struct TunnelLogger : public Logger
|
||||
|
||||
BufferState logEI(const ErrorInfo & ei) override
|
||||
{
|
||||
if (ei.level > verbosity) {
|
||||
if (ei.level > getVerbosity()) {
|
||||
return BufferState::HasSpace;
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ struct ClientSettings
|
||||
settings.keepFailed.override(keepFailed);
|
||||
settings.keepGoing.override(keepGoing);
|
||||
settings.tryFallback.override(tryFallback);
|
||||
nix::verbosity = verbosity;
|
||||
setVerbosity(verbosity);
|
||||
settings.maxBuildJobs.override(maxBuildJobs);
|
||||
settings.maxSilentTime.override(maxSilentTime);
|
||||
settings.verboseBuild = verboseBuild;
|
||||
|
||||
@@ -177,7 +177,7 @@ struct TransferItem
|
||||
}
|
||||
}
|
||||
|
||||
if (verbosity >= lvlVomit) {
|
||||
if (getVerbosity() >= lvlVomit) {
|
||||
curl_easy_setopt(req.get(), CURLOPT_VERBOSE, 1);
|
||||
curl_easy_setopt(req.get(), CURLOPT_DEBUGFUNCTION, TransferItem::debugCallback);
|
||||
}
|
||||
|
||||
@@ -127,11 +127,12 @@ kj::Promise<Result<void>> RemoteStore::setOptions(Connection & conn)
|
||||
try {
|
||||
StringSink command;
|
||||
|
||||
// clang-format off
|
||||
command << WorkerProto::Op::SetOptions
|
||||
<< settings.keepFailed
|
||||
<< settings.keepGoing
|
||||
<< settings.tryFallback
|
||||
<< verbosity
|
||||
<< getVerbosity()
|
||||
<< settings.maxBuildJobs
|
||||
<< settings.maxSilentTime
|
||||
<< true
|
||||
@@ -140,6 +141,7 @@ try {
|
||||
<< 0 /* obsolete print build trace */
|
||||
<< settings.buildCores
|
||||
<< settings.useSubstitutes;
|
||||
// clang-format on
|
||||
|
||||
std::map<std::string, Config::SettingInfo> overrides;
|
||||
settings.getSettings(overrides, true); // libstore settings
|
||||
|
||||
@@ -97,7 +97,10 @@ class AwsLogger : public Aws::Utils::Logging::FormattedLogSystem
|
||||
void ProcessFormattedStatement(Aws::String && statement) override
|
||||
{
|
||||
// FIXME: workaround for truly excessive log spam in debug level: https://github.com/aws/aws-sdk-cpp/pull/3003
|
||||
if ((statement.find("(SSLDataIn)") != std::string::npos || statement.find("(SSLDataOut)") != std::string::npos) && verbosity <= lvlDebug) {
|
||||
if ((statement.find("(SSLDataIn)") != std::string::npos
|
||||
|| statement.find("(SSLDataOut)") != std::string::npos)
|
||||
&& getVerbosity() <= lvlDebug)
|
||||
{
|
||||
return;
|
||||
}
|
||||
debug("AWS: %s", chomp(statement));
|
||||
@@ -116,9 +119,8 @@ static void initAWS()
|
||||
shared.cc), so don't let aws-sdk-cpp override it. */
|
||||
options.cryptoOptions.initAndCleanupOpenSSL = false;
|
||||
|
||||
if (verbosity >= lvlDebug) {
|
||||
options.loggingOptions.logLevel =
|
||||
verbosity == lvlDebug
|
||||
if (getVerbosity() >= lvlDebug) {
|
||||
options.loggingOptions.logLevel = getVerbosity() == lvlDebug
|
||||
? Aws::Utils::Logging::LogLevel::Debug
|
||||
: Aws::Utils::Logging::LogLevel::Trace;
|
||||
options.loggingOptions.logger_create_fn = [options]() {
|
||||
|
||||
+1
-1
@@ -100,7 +100,7 @@ void RootArgs::parseCmdline(const Strings & _cmdline)
|
||||
throw UsageError("Invalid word number to get completion for: %zu\n. Your autocompletions might be misconfigured", n);
|
||||
*std::next(cmdline.begin(), n - 1) += completionMarker;
|
||||
completions = std::make_shared<Completions>();
|
||||
verbosity = lvlError;
|
||||
setVerbosity(lvlError);
|
||||
}
|
||||
|
||||
for (auto pos = cmdline.begin(); pos != cmdline.end(); ) {
|
||||
|
||||
@@ -76,7 +76,7 @@ public:
|
||||
|
||||
BufferState log(Verbosity lvl, std::string_view s) override
|
||||
{
|
||||
if (lvl > verbosity) {
|
||||
if (lvl > getVerbosity()) {
|
||||
return BufferState::HasSpace;
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ public:
|
||||
ActivityId parent
|
||||
) override
|
||||
{
|
||||
if (lvl <= verbosity && !s.empty()) {
|
||||
if (lvl <= getVerbosity() && !s.empty()) {
|
||||
return log(lvl, s + "...");
|
||||
}
|
||||
return BufferState::HasSpace;
|
||||
@@ -136,7 +136,12 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
Verbosity verbosity = lvlInfo;
|
||||
Verbosity detail::verbosity = lvlInfo;
|
||||
|
||||
void setVerbosity(Verbosity v)
|
||||
{
|
||||
detail::verbosity = v;
|
||||
}
|
||||
|
||||
Verbosity verbosityFromIntClamped(int val)
|
||||
{
|
||||
|
||||
+14
-6
@@ -319,10 +319,19 @@ Logger * makeSimpleLogger(bool printBuildLogs = true);
|
||||
|
||||
Logger * makeJSONLogger(Logger & prevLogger);
|
||||
|
||||
namespace detail {
|
||||
extern Verbosity verbosity;
|
||||
}
|
||||
|
||||
inline Verbosity getVerbosity()
|
||||
{
|
||||
return detail::verbosity;
|
||||
}
|
||||
|
||||
/**
|
||||
* suppress msgs > this
|
||||
*/
|
||||
extern Verbosity verbosity;
|
||||
void setVerbosity(Verbosity v);
|
||||
|
||||
extern LoggerSettings loggerSettings;
|
||||
|
||||
@@ -388,7 +397,7 @@ extern LoggerSettings loggerSettings;
|
||||
*/
|
||||
#define logErrorInfo(level, errorInfo...) \
|
||||
do { \
|
||||
if ((level) <= ::nix::verbosity) { \
|
||||
if ((level) <= ::nix::detail::verbosity) { \
|
||||
(void) ::nix::logger->logEI((level), errorInfo); \
|
||||
} \
|
||||
} while (0)
|
||||
@@ -404,10 +413,9 @@ extern LoggerSettings loggerSettings;
|
||||
#define printMsgUsing(loggerParam, level, fs, args...) \
|
||||
do { \
|
||||
auto _lix_logger_print_lvl = level; \
|
||||
const char * _lix_format = []<size_t N>(const char(&_lix_fs)[N]) { return _lix_fs; }(fs); \
|
||||
if (_lix_logger_print_lvl <= ::nix::verbosity) { \
|
||||
(void \
|
||||
) loggerParam->log(_lix_logger_print_lvl, ::nix::HintFmt(_lix_format, ##args).str()); \
|
||||
const char * _lix_format = []<size_t N>(const char (&_lix_fs)[N]) { return _lix_fs; }(fs); \
|
||||
if (_lix_logger_print_lvl <= ::nix::detail::verbosity) { \
|
||||
(void) loggerParam->log(_lix_logger_print_lvl, ::nix::HintFmt(_lix_format, ##args).str()); \
|
||||
} \
|
||||
} while (0)
|
||||
#define printMsg(level, fs, args...) printMsgUsing(::nix::logger, level, fs, ##args)
|
||||
|
||||
+2
-2
@@ -393,7 +393,7 @@ try {
|
||||
"--for",
|
||||
peer.pid ? fmt("%1%", *peer.pid) : "unknown",
|
||||
"--log-level",
|
||||
fmt("%1%", int(verbosity)),
|
||||
fmt("%1%", int(getVerbosity())),
|
||||
"--protocol",
|
||||
std::string(socket.id()),
|
||||
},
|
||||
@@ -687,7 +687,7 @@ main_nix_daemon(AsyncIoRoot & aio, std::string programName, Strings argv, std::s
|
||||
}).parseCmdline(argv);
|
||||
|
||||
if (isInstance) {
|
||||
verbosity = Verbosity(std::min<uint64_t>(subdaemonLogLevel, lvlVomit));
|
||||
setVerbosity(Verbosity(std::min<uint64_t>(subdaemonLogLevel, lvlVomit)));
|
||||
daemonInstance(daemon::getProtocol(protocol), aio, isTrustedOpt, peerPidArg);
|
||||
} else {
|
||||
runDaemon(aio, stdio, isTrustedOpt);
|
||||
|
||||
+2
-1
@@ -599,8 +599,9 @@ struct CmdDevelop : Common, MixEnvironment
|
||||
|
||||
auto script = makeRcScript(*state, store, buildEnvironment, (Path) tmpDir);
|
||||
|
||||
if (verbosity >= lvlDebug)
|
||||
if (getVerbosity() >= lvlDebug) {
|
||||
script += "set -x\n";
|
||||
}
|
||||
|
||||
script += fmt("command rm -f '%s'\n", rcFilePath);
|
||||
|
||||
|
||||
+2
-2
@@ -505,9 +505,9 @@ int mainWrapped(AsyncIoRoot & aio, int argc, char ** argv)
|
||||
|
||||
// FIXME: stop messing about with log verbosity depending on if it is interactive use
|
||||
if (isatty(STDERR_FILENO)) {
|
||||
verbosity = lvlNotice;
|
||||
setVerbosity(lvlNotice);
|
||||
} else {
|
||||
verbosity = lvlInfo;
|
||||
setVerbosity(lvlInfo);
|
||||
}
|
||||
|
||||
registerCommands();
|
||||
|
||||
@@ -78,7 +78,7 @@ void init()
|
||||
|
||||
void setVerbosity(int level)
|
||||
CODE:
|
||||
verbosity = (Verbosity) level;
|
||||
setVerbosity((Verbosity) level);
|
||||
|
||||
|
||||
int isValidPath(char * path)
|
||||
|
||||
@@ -445,7 +445,7 @@ TEST(FileTransfer, DISABLED_interrupt)
|
||||
}
|
||||
};
|
||||
|
||||
verbosity = lvlDebug;
|
||||
setVerbosity(lvlDebug);
|
||||
logger = new InterruptingLogger;
|
||||
|
||||
AsyncIoRoot aio;
|
||||
|
||||
@@ -102,7 +102,7 @@ namespace nix {
|
||||
}
|
||||
|
||||
TEST(logEI, loggingErrorOnTalkativeLevel) {
|
||||
verbosity = lvlTalkative;
|
||||
setVerbosity(lvlTalkative);
|
||||
|
||||
testing::internal::CaptureStderr();
|
||||
|
||||
@@ -115,7 +115,7 @@ namespace nix {
|
||||
}
|
||||
|
||||
TEST(logEI, loggingErrorOnChattyLevel) {
|
||||
verbosity = lvlChatty;
|
||||
setVerbosity(lvlChatty);
|
||||
|
||||
testing::internal::CaptureStderr();
|
||||
|
||||
@@ -128,7 +128,7 @@ namespace nix {
|
||||
}
|
||||
|
||||
TEST(logEI, loggingErrorOnDebugLevel) {
|
||||
verbosity = lvlDebug;
|
||||
setVerbosity(lvlDebug);
|
||||
|
||||
testing::internal::CaptureStderr();
|
||||
|
||||
@@ -141,7 +141,7 @@ namespace nix {
|
||||
}
|
||||
|
||||
TEST(logEI, loggingErrorOnVomitLevel) {
|
||||
verbosity = lvlVomit;
|
||||
setVerbosity(lvlVomit);
|
||||
|
||||
testing::internal::CaptureStderr();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user