git.delta.rocks / jrsonnet / refs/commits / d91d16dbe1e7

difftreelog

source

crates/nix-eval/src/logging.cc2.2 KiBsourcehistory
1#include "nix-eval/src/logging.rs"2#include "logging.hh"3#include <nix/util/logging.hh>45using namespace nix;67struct TracingLogger : Logger {8  TracingLogger() {}910  bool isVerbose() override { return true; }11  // void addFields(nlohmann::json & json, const Fields & fields)12  //    {13  //        if (fields.empty())14  //            return;15  //        auto & arr = json["fields"] = nlohmann::json::array();16  //        for (auto & f : fields)17  //            if (f.type == Logger::Field::tInt)18  //                arr.push_back(f.i);19  //            else if (f.type == Logger::Field::tString)20  //                arr.push_back(f.s);21  //            else22  //                unreachable();23  //    }24  void log(Verbosity lvl, std::string_view s) override {25    rust::Str str(s.data(), s.size());26    emit_log(lvl, str);27  }28  void logEI(const ErrorInfo &ei) override { emit_log(ei.level, ei.msg.str()); }2930  void startActivity(ActivityId act, Verbosity lvl, ActivityType type,31                     const std::string &s, const Fields &fields,32                     ActivityId parent) override {33    auto b = new_start_activity(act, lvl, type);34    for (auto &f : fields) {35      if (f.type == Logger::Field::tInt) {36        b->add_int_field(f.i);37      } else if (f.type == Logger::Field::tString) {38        b->add_string_field(f.s);39      } else {40        unreachable();41      }42    }43    b->emit(parent, s);44  };4546  void stopActivity(ActivityId act) override { emit_stop(act); };4748  void result(ActivityId act, ResultType type, const Fields &fields) override {49    auto b = new_start_activity(act, 0, type);50    for (auto &f : fields) {51      if (f.type == Logger::Field::tInt) {52        b->add_int_field(f.i);53      } else if (f.type == Logger::Field::tString) {54        b->add_string_field(f.s);55      } else {56        unreachable();57      }58    }59    b->emit_result(type);60  };6162  void writeToStdout(std::string_view s) override {63    printf("writeToStdout() called\n");64  }65  void warn(const std::string &msg) override { emit_warn(msg); }6667  virtual std::optional<char> ask(std::string_view s) {68    printf("ask() called\n");69    return {};70  }71};7273extern "C" {74void apply_tracing_logger() { logger = std::make_unique<TracingLogger>(); }75}