aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/lib')
-rw-r--r--src/core/lib/gpr/log.cc10
-rw-r--r--src/core/lib/gpr/log_android.cc4
-rw-r--r--src/core/lib/gpr/log_linux.cc4
-rw-r--r--src/core/lib/gpr/log_posix.cc4
-rw-r--r--src/core/lib/gpr/log_windows.cc5
5 files changed, 25 insertions, 2 deletions
diff --git a/src/core/lib/gpr/log.cc b/src/core/lib/gpr/log.cc
index 72787ab724..01ef112fb3 100644
--- a/src/core/lib/gpr/log.cc
+++ b/src/core/lib/gpr/log.cc
@@ -44,10 +44,16 @@ const char* gpr_log_severity_string(gpr_log_severity severity) {
GPR_UNREACHABLE_CODE(return "UNKNOWN");
}
+int gpr_should_log(gpr_log_severity severity) {
+ return static_cast<gpr_atm>(severity) >=
+ gpr_atm_no_barrier_load(&g_min_severity_to_print)
+ ? 1
+ : 0;
+}
+
void gpr_log_message(const char* file, int line, gpr_log_severity severity,
const char* message) {
- if (static_cast<gpr_atm>(severity) <
- gpr_atm_no_barrier_load(&g_min_severity_to_print)) {
+ if (gpr_should_log(severity) == 0) {
return;
}
diff --git a/src/core/lib/gpr/log_android.cc b/src/core/lib/gpr/log_android.cc
index 0d3ac0fe52..40ef4c640d 100644
--- a/src/core/lib/gpr/log_android.cc
+++ b/src/core/lib/gpr/log_android.cc
@@ -41,6 +41,10 @@ static android_LogPriority severity_to_log_priority(gpr_log_severity severity) {
void gpr_log(const char* file, int line, gpr_log_severity severity,
const char* format, ...) {
+ /* Avoid message construction if gpr_log_message won't log */
+ if (gpr_should_log(severity) == 0) {
+ return;
+ }
char* message = NULL;
va_list args;
va_start(args, format);
diff --git a/src/core/lib/gpr/log_linux.cc b/src/core/lib/gpr/log_linux.cc
index e4417d9d5d..561276f0c2 100644
--- a/src/core/lib/gpr/log_linux.cc
+++ b/src/core/lib/gpr/log_linux.cc
@@ -44,6 +44,10 @@ static long gettid(void) { return syscall(__NR_gettid); }
void gpr_log(const char* file, int line, gpr_log_severity severity,
const char* format, ...) {
+ /* Avoid message construction if gpr_log_message won't log */
+ if (gpr_should_log(severity) == 0) {
+ return;
+ }
char* message = nullptr;
va_list args;
va_start(args, format);
diff --git a/src/core/lib/gpr/log_posix.cc b/src/core/lib/gpr/log_posix.cc
index 6f93cdefcd..0acb225572 100644
--- a/src/core/lib/gpr/log_posix.cc
+++ b/src/core/lib/gpr/log_posix.cc
@@ -34,6 +34,10 @@ static intptr_t gettid(void) { return (intptr_t)pthread_self(); }
void gpr_log(const char* file, int line, gpr_log_severity severity,
const char* format, ...) {
+ /* Avoid message construction if gpr_log_message won't log */
+ if (gpr_should_log(severity) == 0) {
+ return;
+ }
char buf[64];
char* allocated = nullptr;
char* message = nullptr;
diff --git a/src/core/lib/gpr/log_windows.cc b/src/core/lib/gpr/log_windows.cc
index caaa973f5a..060be572b8 100644
--- a/src/core/lib/gpr/log_windows.cc
+++ b/src/core/lib/gpr/log_windows.cc
@@ -34,6 +34,11 @@
void gpr_log(const char* file, int line, gpr_log_severity severity,
const char* format, ...) {
+ /* Avoid message construction if gpr_log_message won't log */
+ if (gpr_should_log(severity) == 0) {
+ return;
+ }
+
char* message = NULL;
va_list args;
int ret;