Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b40c15e1 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Move default tag from libbase to liblog"

parents 8bf4e29e 69ee5dde
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -115,7 +115,6 @@ void StdioLogger(LogId, LogSeverity, const char*, const char*, unsigned int, con

void DefaultAborter(const char* abort_message);

std::string GetDefaultTag();
void SetDefaultTag(const std::string& tag);

// We expose this even though it is the default because a user that wants to
+2 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ const std::optional<LibLogFunctions>& GetLibLogFunctions() {
    DLSYM(__android_log_default_aborter)
    DLSYM(__android_log_set_minimum_priority);
    DLSYM(__android_log_get_minimum_priority);
    DLSYM(__android_log_set_default_tag);
#undef DLSYM

    return real_liblog_functions;
@@ -72,6 +73,7 @@ const std::optional<LibLogFunctions>& GetLibLogFunctions() {
        .__android_log_default_aborter = __android_log_default_aborter,
        .__android_log_set_minimum_priority = __android_log_set_minimum_priority,
        .__android_log_get_minimum_priority = __android_log_get_minimum_priority,
        .__android_log_set_default_tag = __android_log_set_default_tag,
    };
  }();
  return liblog_functions;
+1 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ struct LibLogFunctions {
  void (*__android_log_default_aborter)(const char* abort_message);
  int (*__android_log_set_minimum_priority)(int priority);
  int (*__android_log_get_minimum_priority)();
  void (*__android_log_set_default_tag)(const char* tag);
};

const std::optional<LibLogFunctions>& GetLibLogFunctions();
+25 −30
Original line number Diff line number Diff line
@@ -211,19 +211,19 @@ static AbortFunction& Aborter() {
  return aborter;
}

// Only used for Q fallback.
static std::recursive_mutex& TagLock() {
  static auto& tag_lock = *new std::recursive_mutex();
  return tag_lock;
}
// Only used for Q fallback.
static std::string* gDefaultTag;
std::string GetDefaultTag() {
  std::lock_guard<std::recursive_mutex> lock(TagLock());
  if (gDefaultTag == nullptr) {
    return "";
  }
  return *gDefaultTag;
}

void SetDefaultTag(const std::string& tag) {
  static auto& liblog_functions = GetLibLogFunctions();
  if (liblog_functions) {
    liblog_functions->__android_log_set_default_tag(tag.c_str());
  } else {
    std::lock_guard<std::recursive_mutex> lock(TagLock());
    if (gDefaultTag != nullptr) {
      delete gDefaultTag;
@@ -233,6 +233,7 @@ void SetDefaultTag(const std::string& tag) {
      gDefaultTag = new std::string(tag);
    }
  }
}

static bool gInitialized = false;

@@ -574,24 +575,18 @@ void LogMessage::LogLine(const char* file, unsigned int line, LogSeverity severi
                         const char* message) {
  static auto& liblog_functions = GetLibLogFunctions();
  auto priority = LogSeverityToPriority(severity);
  if (liblog_functions) {
    __android_logger_data logger_data = {
        sizeof(__android_logger_data), LOG_ID_DEFAULT, priority, tag, file, line};
    __android_log_write_logger_data(&logger_data, message);
  } else {
    if (tag == nullptr) {
      std::lock_guard<std::recursive_mutex> lock(TagLock());
      if (gDefaultTag == nullptr) {
        gDefaultTag = new std::string(getprogname());
      }

    if (liblog_functions) {
      __android_logger_data logger_data = {sizeof(__android_logger_data), LOG_ID_DEFAULT, priority,
                                           gDefaultTag->c_str(),          file,           line};
      __android_log_write_logger_data(&logger_data, message);
    } else {
      Logger()(DEFAULT, severity, gDefaultTag->c_str(), file, line, message);
    }
  } else {
    if (liblog_functions) {
      __android_logger_data logger_data = {
          sizeof(__android_logger_data), LOG_ID_DEFAULT, priority, tag, file, line};
      __android_log_write_logger_data(&logger_data, message);
    } else {
      Logger()(DEFAULT, severity, tag, file, line, message);
    }
+0 −15
Original line number Diff line number Diff line
@@ -603,21 +603,6 @@ __attribute__((constructor)) void TestLoggingInConstructor() {
  LOG(ERROR) << "foobar";
}

TEST(logging, SetDefaultTag) {
  constexpr const char* expected_tag = "test_tag";
  constexpr const char* expected_msg = "foobar";
  CapturedStderr cap;
  {
    std::string old_default_tag = android::base::GetDefaultTag();
    android::base::SetDefaultTag(expected_tag);
    android::base::ScopedLogSeverity sls(android::base::LogSeverity::INFO);
    LOG(INFO) << expected_msg;
    android::base::SetDefaultTag(old_default_tag);
  }
  ASSERT_NO_FATAL_FAILURE(
      CheckMessage(cap, android::base::LogSeverity::INFO, expected_msg, expected_tag));
}

TEST(logging, StdioLogger) {
  CapturedStderr cap_err;
  CapturedStdout cap_out;
Loading