| Index: base/logging_win.cc
|
| diff --git a/base/logging_win.cc b/base/logging_win.cc
|
| index 319ae8a9d38186aa7ffc6466f574c2a795a1832c..421e71cb159379e24872863fedbd7cb1a893f7c9 100644
|
| --- a/base/logging_win.cc
|
| +++ b/base/logging_win.cc
|
| @@ -3,6 +3,7 @@
|
| // found in the LICENSE file.
|
|
|
| #include "base/logging_win.h"
|
| +#include "base/memory/ptr_util.h"
|
| #include "base/memory/singleton.h"
|
| #include <initguid.h> // NOLINT
|
|
|
| @@ -14,6 +15,9 @@ using base::win::EtwMofEvent;
|
| DEFINE_GUID(kLogEventId,
|
| 0x7fe69228, 0x633e, 0x4f06, 0x80, 0xc1, 0x52, 0x7f, 0xea, 0x23, 0xe3, 0xa7);
|
|
|
| +LogEventProvider::WinLogMessageHandler* LogEventProvider::log_handler_ =
|
| + nullptr;
|
| +
|
| LogEventProvider::LogEventProvider() : old_log_level_(LOG_NONE) {
|
| }
|
|
|
| @@ -22,9 +26,9 @@ LogEventProvider* LogEventProvider::GetInstance() {
|
| LogEventProvider>>::get();
|
| }
|
|
|
| -bool LogEventProvider::LogMessage(logging::LogSeverity severity,
|
| - const char* file, int line, size_t message_start,
|
| - const std::string& message) {
|
| +bool LogEventProvider::WinLogMessageHandler::OnMessage(
|
| + logging::LogSeverity severity, const char* file, int line,
|
| + size_t message_start, const std::string& message) {
|
| EtwEventLevel level = TRACE_LEVEL_NONE;
|
|
|
| // Convert the log severity to the most appropriate ETW trace level.
|
| @@ -88,7 +92,8 @@ bool LogEventProvider::LogMessage(logging::LogSeverity severity,
|
| provider->Log(event.get());
|
| }
|
|
|
| - // Don't increase verbosity in other log destinations.
|
| + // Don't increase verbosity in other log destinations below this handler
|
| + // in the handler stack.
|
| if (severity < provider->old_log_level_)
|
| return true;
|
|
|
| @@ -102,11 +107,13 @@ void LogEventProvider::Initialize(const GUID& provider_name) {
|
| provider->Register();
|
|
|
| // Register our message handler with logging.
|
| - SetLogMessageHandler(LogMessage);
|
| + log_handler_ = new WinLogMessageHandler();
|
| }
|
|
|
| void LogEventProvider::Uninitialize() {
|
| LogEventProvider::GetInstance()->Unregister();
|
| + delete log_handler_;
|
| + log_handler_ = nullptr;
|
| }
|
|
|
| void LogEventProvider::OnEventsEnabled() {
|
|
|