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

Side by Side Diff: chrome/test/chromedriver/logging.cc

Issue 2034393004: Allow multiple logging::LogMessage{Handler,Listener}s Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments, deque for listeners, reentrant test Created 4 years, 4 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/test/chromedriver/logging.h" 5 #include "chrome/test/chromedriver/logging.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <stdio.h> 9 #include <stdio.h>
10 10
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 return session->driver_log.get(); 89 return session->driver_log.get();
90 } 90 }
91 91
92 bool InternalIsVLogOn(int vlog_level) { 92 bool InternalIsVLogOn(int vlog_level) {
93 WebDriverLog* session_log = GetSessionLog(); 93 WebDriverLog* session_log = GetSessionLog();
94 Log::Level session_level = session_log ? session_log->min_level() : Log::kOff; 94 Log::Level session_level = session_log ? session_log->min_level() : Log::kOff;
95 Log::Level level = g_log_level < session_level ? g_log_level : session_level; 95 Log::Level level = g_log_level < session_level ? g_log_level : session_level;
96 return GetLevelFromSeverity(vlog_level * -1) >= level; 96 return GetLevelFromSeverity(vlog_level * -1) >= level;
97 } 97 }
98 98
99 bool HandleLogMessage(int severity, 99 class LogMessageHandler : logging::LogMessageHandler {
100 const char* file, 100 bool OnMessage(int severity,
101 int line, 101 const char* file,
102 size_t message_start, 102 int line,
103 const std::string& str) { 103 size_t message_start,
104 const std::string& str) override;
105 };
106
107 bool LogMessageHandler::OnMessage(int severity,
108 const char* file,
109 int line,
110 size_t message_start,
111 const std::string& str) {
104 Log::Level level = GetLevelFromSeverity(severity); 112 Log::Level level = GetLevelFromSeverity(severity);
105 std::string message = str.substr(message_start); 113 std::string message = str.substr(message_start);
106 114
107 if (level >= g_log_level) { 115 if (level >= g_log_level) {
108 const char* level_name = LevelToName(level); 116 const char* level_name = LevelToName(level);
109 std::string entry = base::StringPrintf( 117 std::string entry = base::StringPrintf(
110 "[%.3lf][%s]: %s", 118 "[%.3lf][%s]: %s",
111 base::TimeDelta(base::TimeTicks::Now() - 119 base::TimeDelta(base::TimeTicks::Now() -
112 base::TimeTicks::FromInternalValue(g_start_time)) 120 base::TimeTicks::FromInternalValue(g_start_time))
113 .InSecondsF(), 121 .InSecondsF(),
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 g_log_level = Log::kAll; 238 g_log_level = Log::kAll;
231 239
232 // Turn on VLOG for chromedriver. This is parsed during logging::InitLogging. 240 // Turn on VLOG for chromedriver. This is parsed during logging::InitLogging.
233 cmd_line->AppendSwitchASCII("vmodule", "*/chrome/test/chromedriver/*=3"); 241 cmd_line->AppendSwitchASCII("vmodule", "*/chrome/test/chromedriver/*=3");
234 242
235 logging::SetMinLogLevel(logging::LOG_WARNING); 243 logging::SetMinLogLevel(logging::LOG_WARNING);
236 logging::SetLogItems(false, // enable_process_id 244 logging::SetLogItems(false, // enable_process_id
237 false, // enable_thread_id 245 false, // enable_thread_id
238 false, // enable_timestamp 246 false, // enable_timestamp
239 false); // enable_tickcount 247 false); // enable_tickcount
240 logging::SetLogMessageHandler(&HandleLogMessage); 248 auto* handler = new LogMessageHandler(); // Intentionally leak this instance.
249 CHECK(handler);
brettw 2016/11/14 22:01:31 Normally we wouldn't bother asserting the malloc r
wychen 2016/11/18 21:14:00 Done.
241 250
242 logging::LoggingSettings logging_settings; 251 logging::LoggingSettings logging_settings;
243 logging_settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; 252 logging_settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
244 return logging::InitLogging(logging_settings); 253 return logging::InitLogging(logging_settings);
245 } 254 }
246 255
247 Status CreateLogs(const Capabilities& capabilities, 256 Status CreateLogs(const Capabilities& capabilities,
248 const Session* session, 257 const Session* session,
249 ScopedVector<WebDriverLog>* out_logs, 258 ScopedVector<WebDriverLog>* out_logs,
250 ScopedVector<DevToolsEventListener>* out_devtools_listeners, 259 ScopedVector<DevToolsEventListener>* out_devtools_listeners,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 logs.push_back(browser_log); 300 logs.push_back(browser_log);
292 // If the level is OFF, don't even bother listening for DevTools events. 301 // If the level is OFF, don't even bother listening for DevTools events.
293 if (browser_log_level != Log::kOff) 302 if (browser_log_level != Log::kOff)
294 devtools_listeners.push_back(new ConsoleLogger(browser_log)); 303 devtools_listeners.push_back(new ConsoleLogger(browser_log));
295 304
296 out_logs->swap(logs); 305 out_logs->swap(logs);
297 out_devtools_listeners->swap(devtools_listeners); 306 out_devtools_listeners->swap(devtools_listeners);
298 out_command_listeners->swap(command_listeners); 307 out_command_listeners->swap(command_listeners);
299 return Status(kOk); 308 return Status(kOk);
300 } 309 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698