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

Commit 69ee5dde authored by Tom Cherry's avatar Tom Cherry
Browse files

Move default tag from libbase to liblog

Bug: 119867234
Test: log tags look right, libbase/liblog unit tests
Change-Id: I3670c3fdce3d0238a23a53bba2877ffed1291f9c
parent cfd517d2
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