Skip to content

Commit db7577a

Browse files
authored
Merge pull request #12483 from DeterminateSystems/json-logger
JSONLogger: Log to a file descriptor instead of another Logger
2 parents 63a603d + c0c1469 commit db7577a

File tree

5 files changed

+10
-9
lines changed

5 files changed

+10
-9
lines changed

src/build-remote/build-remote.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ static bool allSupportedLocally(Store & store, const std::set<std::string>& requ
5151
static int main_build_remote(int argc, char * * argv)
5252
{
5353
{
54-
logger = makeJSONLogger(*logger);
54+
logger = makeJSONLogger(getStandardError());
5555

5656
/* Ensure we don't get any SSH passphrase or host key popups. */
5757
unsetenv("DISPLAY");

src/libmain/loggers.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Logger * makeDefaultLogger() {
2727
case LogFormat::rawWithLogs:
2828
return makeSimpleLogger(true);
2929
case LogFormat::internalJSON:
30-
return makeJSONLogger(*makeSimpleLogger(true));
30+
return makeJSONLogger(getStandardError());
3131
case LogFormat::bar:
3232
return makeProgressBar();
3333
case LogFormat::barWithLogs: {

src/libstore/unix/build/local-derivation-goal.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2225,7 +2225,7 @@ void LocalDerivationGoal::runChild()
22252225
/* Execute the program. This should not return. */
22262226
if (drv->isBuiltin()) {
22272227
try {
2228-
logger = makeJSONLogger(*logger);
2228+
logger = makeJSONLogger(getStandardError());
22292229

22302230
std::map<std::string, Path> outputs;
22312231
for (auto & e : drv->outputs)

src/libutil/logging.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,9 @@ void to_json(nlohmann::json & json, std::shared_ptr<Pos> pos)
167167
}
168168

169169
struct JSONLogger : Logger {
170-
Logger & prevLogger;
170+
Descriptor fd;
171171

172-
JSONLogger(Logger & prevLogger) : prevLogger(prevLogger) { }
172+
JSONLogger(Descriptor fd) : fd(fd) { }
173173

174174
bool isVerbose() override {
175175
return true;
@@ -190,7 +190,7 @@ struct JSONLogger : Logger {
190190

191191
void write(const nlohmann::json & json)
192192
{
193-
prevLogger.log(lvlError, "@nix " + json.dump(-1, ' ', false, nlohmann::json::error_handler_t::replace));
193+
writeLine(fd, "@nix " + json.dump(-1, ' ', false, nlohmann::json::error_handler_t::replace));
194194
}
195195

196196
void log(Verbosity lvl, std::string_view s) override
@@ -262,9 +262,9 @@ struct JSONLogger : Logger {
262262
}
263263
};
264264

265-
Logger * makeJSONLogger(Logger & prevLogger)
265+
Logger * makeJSONLogger(Descriptor fd)
266266
{
267-
return new JSONLogger(prevLogger);
267+
return new JSONLogger(fd);
268268
}
269269

270270
static Logger::Fields getFields(nlohmann::json & json)

src/libutil/logging.hh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include "error.hh"
55
#include "config.hh"
6+
#include "file-descriptor.hh"
67

78
#include <nlohmann/json_fwd.hpp>
89

@@ -183,7 +184,7 @@ extern Logger * logger;
183184

184185
Logger * makeSimpleLogger(bool printBuildLogs = true);
185186

186-
Logger * makeJSONLogger(Logger & prevLogger);
187+
Logger * makeJSONLogger(Descriptor fd);
187188

188189
/**
189190
* @param source A noun phrase describing the source of the message, e.g. "the builder".

0 commit comments

Comments
 (0)