Use Abseil logging for gRPC v1.65.0 and above.
Original logging method is now deprecated and results in error message
on Nginx startup.
(cherry picked from commit 4c841c1c55)
This commit is contained in:
parent
52efd18947
commit
ea7ea6a198
1 changed files with 19 additions and 5 deletions
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
#include "grpc_log.hpp"
|
#include "grpc_log.hpp"
|
||||||
|
|
||||||
#include <grpc/support/log.h>
|
|
||||||
#include <google/protobuf/stubs/common.h>
|
#include <google/protobuf/stubs/common.h>
|
||||||
|
#include <grpcpp/grpcpp.h>
|
||||||
|
|
||||||
#if GOOGLE_PROTOBUF_VERSION < 4022000
|
#if GOOGLE_PROTOBUF_VERSION < 4022000
|
||||||
|
|
||||||
|
|
@ -36,9 +36,9 @@ private:
|
||||||
#include <absl/log/initialize.h>
|
#include <absl/log/initialize.h>
|
||||||
#include <absl/log/log_sink_registry.h>
|
#include <absl/log/log_sink_registry.h>
|
||||||
|
|
||||||
class ProtobufLog : absl::LogSink {
|
class NgxLogSink : absl::LogSink {
|
||||||
public:
|
public:
|
||||||
ProtobufLog()
|
NgxLogSink()
|
||||||
{
|
{
|
||||||
absl::InitializeLog();
|
absl::InitializeLog();
|
||||||
absl::AddLogSink(this);
|
absl::AddLogSink(this);
|
||||||
|
|
@ -46,7 +46,7 @@ public:
|
||||||
absl::SetStderrThreshold(static_cast<absl::LogSeverity>(100));
|
absl::SetStderrThreshold(static_cast<absl::LogSeverity>(100));
|
||||||
}
|
}
|
||||||
|
|
||||||
~ProtobufLog() override { absl::RemoveLogSink(this); }
|
~NgxLogSink() override { absl::RemoveLogSink(this); }
|
||||||
|
|
||||||
void Send(const absl::LogEntry& entry) override
|
void Send(const absl::LogEntry& entry) override
|
||||||
{
|
{
|
||||||
|
|
@ -61,12 +61,19 @@ public:
|
||||||
ngx_str_t message { entry.text_message().size(),
|
ngx_str_t message { entry.text_message().size(),
|
||||||
(u_char*)entry.text_message().data() };
|
(u_char*)entry.text_message().data() };
|
||||||
|
|
||||||
ngx_log_error(level, ngx_cycle->log, 0, "OTel/protobuf: %V", &message);
|
ngx_log_error(level, ngx_cycle->log, 0, "OTel/grpc: %V", &message);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef NgxLogSink ProtobufLog;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (GRPC_CPP_VERSION_MAJOR < 1) || \
|
||||||
|
(GRPC_CPP_VERSION_MAJOR == 1 && GRPC_CPP_VERSION_MINOR < 65)
|
||||||
|
|
||||||
|
#include <grpc/support/log.h>
|
||||||
|
|
||||||
class GrpcLog {
|
class GrpcLog {
|
||||||
public:
|
public:
|
||||||
GrpcLog() { gpr_set_log_function(grpcLogHandler); }
|
GrpcLog() { gpr_set_log_function(grpcLogHandler); }
|
||||||
|
|
@ -87,6 +94,13 @@ private:
|
||||||
ProtobufLog protoLog;
|
ProtobufLog protoLog;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// newer gRPC implies newer protobuf, and both use Abseil for logging
|
||||||
|
typedef NgxLogSink GrpcLog;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
void initGrpcLog()
|
void initGrpcLog()
|
||||||
{
|
{
|
||||||
static GrpcLog init;
|
static GrpcLog init;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue