Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: remoting/host/native_messaging/log_message_handler.cc

Issue 2034393004: Allow multiple logging::LogMessage{Handler,Listener}s Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: revert slow, try adding back handlers Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/host/native_messaging/log_message_handler.h" 5 #include "remoting/host/native_messaging/log_message_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/lazy_instance.h" 8 #include "base/lazy_instance.h"
9 #include "base/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 19 matching lines...) Expand all
30 const Delegate& delegate) 30 const Delegate& delegate)
31 : delegate_(delegate), 31 : delegate_(delegate),
32 suppress_logging_(false), 32 suppress_logging_(false),
33 caller_task_runner_(base::ThreadTaskRunnerHandle::Get()), 33 caller_task_runner_(base::ThreadTaskRunnerHandle::Get()),
34 weak_ptr_factory_(this) { 34 weak_ptr_factory_(this) {
35 base::AutoLock lock(g_log_message_handler_lock.Get()); 35 base::AutoLock lock(g_log_message_handler_lock.Get());
36 if (g_log_message_handler) { 36 if (g_log_message_handler) {
37 LOG(FATAL) << "LogMessageHandler is already registered. Only one instance " 37 LOG(FATAL) << "LogMessageHandler is already registered. Only one instance "
38 << "per process is allowed."; 38 << "per process is allowed.";
39 } 39 }
40 previous_log_message_handler_ = logging::GetLogMessageHandler();
41 logging::SetLogMessageHandler(&LogMessageHandler::OnLogMessage);
42 g_log_message_handler = this; 40 g_log_message_handler = this;
43 } 41 }
44 42
45 LogMessageHandler::~LogMessageHandler() { 43 LogMessageHandler::~LogMessageHandler() {
46 base::AutoLock lock(g_log_message_handler_lock.Get()); 44 base::AutoLock lock(g_log_message_handler_lock.Get());
47 if (logging::GetLogMessageHandler() != &LogMessageHandler::OnLogMessage) {
48 LOG(FATAL) << "LogMessageHandler is not the top-most message handler. "
49 << "Cannot unregister.";
50 }
51 logging::SetLogMessageHandler(previous_log_message_handler_);
52 g_log_message_handler = nullptr; 45 g_log_message_handler = nullptr;
53 } 46 }
54 47
55 // static 48 // static
56 const char* LogMessageHandler::kDebugMessageTypeName = "_debug_log"; 49 const char* LogMessageHandler::kDebugMessageTypeName = "_debug_log";
57 50
58 // static 51 bool LogMessageHandler::OnMessage(logging::LogSeverity severity,
59 bool LogMessageHandler::OnLogMessage( 52 const char* file,
60 logging::LogSeverity severity, 53 int line,
61 const char* file, 54 size_t message_start,
62 int line, 55 const std::string& str) {
63 size_t message_start,
64 const std::string& str) {
65 base::AutoLock lock(g_log_message_handler_lock.Get()); 56 base::AutoLock lock(g_log_message_handler_lock.Get());
66 if (g_log_message_handler) { 57 if (g_log_message_handler) {
67 g_log_message_handler->PostLogMessageToCorrectThread( 58 g_log_message_handler->PostLogMessageToCorrectThread(
68 severity, file, line, message_start, str); 59 severity, file, line, message_start, str);
69 } 60 }
70 return false; 61 return false;
71 } 62 }
72 63
73 void LogMessageHandler::PostLogMessageToCorrectThread( 64 void LogMessageHandler::PostLogMessageToCorrectThread(
74 logging::LogSeverity severity, 65 logging::LogSeverity severity,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 dictionary->SetString("message", message); 115 dictionary->SetString("message", message);
125 dictionary->SetString("file", file); 116 dictionary->SetString("file", file);
126 dictionary->SetInteger("line", line); 117 dictionary->SetInteger("line", line);
127 118
128 delegate_.Run(std::move(dictionary)); 119 delegate_.Run(std::move(dictionary));
129 120
130 suppress_logging_ = false; 121 suppress_logging_ = false;
131 } 122 }
132 123
133 } // namespace remoting 124 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698