Move default tag from libbase to liblog
Bug: 119867234
Test: log tags look right, libbase/liblog unit tests
Change-Id: I3670c3fdce3d0238a23a53bba2877ffed1291f9c
diff --git a/base/include/android-base/logging.h b/base/include/android-base/logging.h
index 7fd0182..cc162cd 100644
--- a/base/include/android-base/logging.h
+++ b/base/include/android-base/logging.h
@@ -115,7 +115,6 @@
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
diff --git a/base/liblog_symbols.cpp b/base/liblog_symbols.cpp
index d0e2eaa..d5dfcd2 100644
--- a/base/liblog_symbols.cpp
+++ b/base/liblog_symbols.cpp
@@ -50,6 +50,7 @@
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 @@
.__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;
diff --git a/base/liblog_symbols.h b/base/liblog_symbols.h
index c68fff6..d3134e9 100644
--- a/base/liblog_symbols.h
+++ b/base/liblog_symbols.h
@@ -38,6 +38,7 @@
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();
diff --git a/base/logging.cpp b/base/logging.cpp
index 508871d..1d8ef57 100644
--- a/base/logging.cpp
+++ b/base/logging.cpp
@@ -211,26 +211,27 @@
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) {
- std::lock_guard<std::recursive_mutex> lock(TagLock());
- if (gDefaultTag != nullptr) {
- delete gDefaultTag;
- gDefaultTag = nullptr;
- }
- if (!tag.empty()) {
- gDefaultTag = new 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;
+ gDefaultTag = nullptr;
+ }
+ if (!tag.empty()) {
+ gDefaultTag = new std::string(tag);
+ }
}
}
@@ -574,24 +575,18 @@
const char* message) {
static auto& liblog_functions = GetLibLogFunctions();
auto priority = LogSeverityToPriority(severity);
- 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);
- }
+ 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 (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);
+ if (tag == nullptr) {
+ std::lock_guard<std::recursive_mutex> lock(TagLock());
+ if (gDefaultTag == nullptr) {
+ gDefaultTag = new std::string(getprogname());
+ }
+
+ Logger()(DEFAULT, severity, gDefaultTag->c_str(), file, line, message);
} else {
Logger()(DEFAULT, severity, tag, file, line, message);
}
diff --git a/base/logging_test.cpp b/base/logging_test.cpp
index 8f46196..3a453e6 100644
--- a/base/logging_test.cpp
+++ b/base/logging_test.cpp
@@ -603,21 +603,6 @@
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;