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

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: rebase 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
« no previous file with comments | « chrome/test/base/web_ui_browser_test.cc ('k') | components/crash/content/app/breakpad_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 return session->driver_log.get(); 90 return session->driver_log.get();
91 } 91 }
92 92
93 bool InternalIsVLogOn(int vlog_level) { 93 bool InternalIsVLogOn(int vlog_level) {
94 WebDriverLog* session_log = GetSessionLog(); 94 WebDriverLog* session_log = GetSessionLog();
95 Log::Level session_level = session_log ? session_log->min_level() : Log::kOff; 95 Log::Level session_level = session_log ? session_log->min_level() : Log::kOff;
96 Log::Level level = g_log_level < session_level ? g_log_level : session_level; 96 Log::Level level = g_log_level < session_level ? g_log_level : session_level;
97 return GetLevelFromSeverity(vlog_level * -1) >= level; 97 return GetLevelFromSeverity(vlog_level * -1) >= level;
98 } 98 }
99 99
100 bool HandleLogMessage(int severity, 100 class LogMessageListener : logging::LogMessageListener {
101 const char* file, 101 void OnMessage(int severity,
102 int line, 102 const char* file,
103 size_t message_start, 103 int line,
104 const std::string& str) { 104 size_t message_start,
105 const std::string& str) override;
106 };
107
108 void LogMessageListener::OnMessage(int severity,
109 const char* file,
110 int line,
111 size_t message_start,
112 const std::string& str) {
105 Log::Level level = GetLevelFromSeverity(severity); 113 Log::Level level = GetLevelFromSeverity(severity);
106 std::string message = str.substr(message_start); 114 std::string message = str.substr(message_start);
107 115
108 if (level >= g_log_level) { 116 if (level >= g_log_level) {
109 const char* level_name = LevelToName(level); 117 const char* level_name = LevelToName(level);
110 std::string entry = base::StringPrintf( 118 std::string entry = base::StringPrintf(
111 "[%.3lf][%s]: %s", 119 "[%.3lf][%s]: %s",
112 base::TimeDelta(base::TimeTicks::Now() - 120 base::TimeDelta(base::TimeTicks::Now() -
113 base::TimeTicks::FromInternalValue(g_start_time)) 121 base::TimeTicks::FromInternalValue(g_start_time))
114 .InSecondsF(), 122 .InSecondsF(),
115 level_name, 123 level_name,
116 message.c_str()); 124 message.c_str());
117 fprintf(stderr, "%s", entry.c_str()); 125 fprintf(stderr, "%s", entry.c_str());
118 fflush(stderr); 126 fflush(stderr);
119 } 127 }
120 128
121 WebDriverLog* session_log = GetSessionLog(); 129 WebDriverLog* session_log = GetSessionLog();
122 if (session_log) 130 if (session_log)
123 session_log->AddEntry(level, message); 131 session_log->AddEntry(level, message);
124
125 return true;
126 } 132 }
127 133
128 } // namespace 134 } // namespace
129 135
130 const char WebDriverLog::kBrowserType[] = "browser"; 136 const char WebDriverLog::kBrowserType[] = "browser";
131 const char WebDriverLog::kDriverType[] = "driver"; 137 const char WebDriverLog::kDriverType[] = "driver";
132 const char WebDriverLog::kPerformanceType[] = "performance"; 138 const char WebDriverLog::kPerformanceType[] = "performance";
133 139
134 bool WebDriverLog::NameToLevel(const std::string& name, Log::Level* out_level) { 140 bool WebDriverLog::NameToLevel(const std::string& name, Log::Level* out_level) {
135 for (size_t i = 0; i < arraysize(kNameToLevel); ++i) { 141 for (size_t i = 0; i < arraysize(kNameToLevel); ++i) {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 g_log_level = Log::kAll; 237 g_log_level = Log::kAll;
232 238
233 // Turn on VLOG for chromedriver. This is parsed during logging::InitLogging. 239 // Turn on VLOG for chromedriver. This is parsed during logging::InitLogging.
234 cmd_line->AppendSwitchASCII("vmodule", "*/chrome/test/chromedriver/*=3"); 240 cmd_line->AppendSwitchASCII("vmodule", "*/chrome/test/chromedriver/*=3");
235 241
236 logging::SetMinLogLevel(logging::LOG_WARNING); 242 logging::SetMinLogLevel(logging::LOG_WARNING);
237 logging::SetLogItems(false, // enable_process_id 243 logging::SetLogItems(false, // enable_process_id
238 false, // enable_thread_id 244 false, // enable_thread_id
239 false, // enable_timestamp 245 false, // enable_timestamp
240 false); // enable_tickcount 246 false); // enable_tickcount
241 logging::SetLogMessageHandler(&HandleLogMessage); 247
248 new LogMessageListener(); // Intentionally leak this instance.
242 249
243 logging::LoggingSettings logging_settings; 250 logging::LoggingSettings logging_settings;
244 logging_settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; 251 logging_settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
245 return logging::InitLogging(logging_settings); 252 return logging::InitLogging(logging_settings);
246 } 253 }
247 254
248 Status CreateLogs(const Capabilities& capabilities, 255 Status CreateLogs(const Capabilities& capabilities,
249 const Session* session, 256 const Session* session,
250 ScopedVector<WebDriverLog>* out_logs, 257 ScopedVector<WebDriverLog>* out_logs,
251 ScopedVector<DevToolsEventListener>* out_devtools_listeners, 258 ScopedVector<DevToolsEventListener>* out_devtools_listeners,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 logs.push_back(browser_log); 299 logs.push_back(browser_log);
293 // If the level is OFF, don't even bother listening for DevTools events. 300 // If the level is OFF, don't even bother listening for DevTools events.
294 if (browser_log_level != Log::kOff) 301 if (browser_log_level != Log::kOff)
295 devtools_listeners.push_back(new ConsoleLogger(browser_log)); 302 devtools_listeners.push_back(new ConsoleLogger(browser_log));
296 303
297 out_logs->swap(logs); 304 out_logs->swap(logs);
298 out_devtools_listeners->swap(devtools_listeners); 305 out_devtools_listeners->swap(devtools_listeners);
299 out_command_listeners->swap(command_listeners); 306 out_command_listeners->swap(command_listeners);
300 return Status(kOk); 307 return Status(kOk);
301 } 308 }
OLDNEW
« no previous file with comments | « chrome/test/base/web_ui_browser_test.cc ('k') | components/crash/content/app/breakpad_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698