diff --git a/grpc.def b/grpc.def index ddc6440f34f..e220212fc67 100644 --- a/grpc.def +++ b/grpc.def @@ -233,6 +233,7 @@ EXPORTS gpr_log gpr_should_log gpr_log_verbosity_init + gpr_set_log_function gpr_format_message gpr_strdup gpr_asprintf diff --git a/include/grpc/support/log.h b/include/grpc/support/log.h index 88e7628e0cc..263b69f5203 100644 --- a/include/grpc/support/log.h +++ b/include/grpc/support/log.h @@ -55,6 +55,22 @@ GPRAPI int gpr_should_log(gpr_log_severity severity); GPRAPI void gpr_log_verbosity_init(void); +/** Log overrides: applications can use this API to intercept logging calls + and use their own implementations */ + +struct gpr_log_func_args { + const char* file; + int line; + gpr_log_severity severity; + const char* message; +}; + +typedef struct gpr_log_func_args gpr_log_func_args; + +typedef void (*gpr_log_func)(gpr_log_func_args* args); + +GPRAPI void gpr_set_log_function(gpr_log_func deprecated_setting); + #ifdef __cplusplus } #endif diff --git a/src/core/util/log.cc b/src/core/util/log.cc index 411f76a14cd..6726cde67d1 100644 --- a/src/core/util/log.cc +++ b/src/core/util/log.cc @@ -119,3 +119,10 @@ void gpr_log_verbosity_init(void) { } #endif // GRPC_VERBOSITY_MACRO } + +void gpr_set_log_function([[maybe_unused]] gpr_log_func deprecated_setting) { + LOG(ERROR) + << "This function is deprecated. This function will be deleted in the " + "next gRPC release. You may create a new absl LogSink with similar " + "functionality. gRFC: https://github.com/grpc/proposal/pull/425 "; +} diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.c b/src/ruby/ext/grpc/rb_grpc_imports.generated.c index b0cfa9ce6b0..01f66dbdc43 100644 --- a/src/ruby/ext/grpc/rb_grpc_imports.generated.c +++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.c @@ -256,6 +256,7 @@ gpr_cpu_current_cpu_type gpr_cpu_current_cpu_import; gpr_log_type gpr_log_import; gpr_should_log_type gpr_should_log_import; gpr_log_verbosity_init_type gpr_log_verbosity_init_import; +gpr_set_log_function_type gpr_set_log_function_import; gpr_format_message_type gpr_format_message_import; gpr_strdup_type gpr_strdup_import; gpr_asprintf_type gpr_asprintf_import; @@ -541,6 +542,7 @@ void grpc_rb_load_imports(HMODULE library) { gpr_log_import = (gpr_log_type) GetProcAddress(library, "gpr_log"); gpr_should_log_import = (gpr_should_log_type) GetProcAddress(library, "gpr_should_log"); gpr_log_verbosity_init_import = (gpr_log_verbosity_init_type) GetProcAddress(library, "gpr_log_verbosity_init"); + gpr_set_log_function_import = (gpr_set_log_function_type) GetProcAddress(library, "gpr_set_log_function"); gpr_format_message_import = (gpr_format_message_type) GetProcAddress(library, "gpr_format_message"); gpr_strdup_import = (gpr_strdup_type) GetProcAddress(library, "gpr_strdup"); gpr_asprintf_import = (gpr_asprintf_type) GetProcAddress(library, "gpr_asprintf"); diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h index 1b325a1a024..48fe5f38e05 100644 --- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h +++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h @@ -744,6 +744,9 @@ extern gpr_should_log_type gpr_should_log_import; typedef void(*gpr_log_verbosity_init_type)(void); extern gpr_log_verbosity_init_type gpr_log_verbosity_init_import; #define gpr_log_verbosity_init gpr_log_verbosity_init_import +typedef void(*gpr_set_log_function_type)(gpr_log_func deprecated_setting); +extern gpr_set_log_function_type gpr_set_log_function_import; +#define gpr_set_log_function gpr_set_log_function_import typedef char*(*gpr_format_message_type)(int messageid); extern gpr_format_message_type gpr_format_message_import; #define gpr_format_message gpr_format_message_import