OLD | NEW |
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 <stdio.h> | 7 #include <stdio.h> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 case logging::LOG_WARNING: | 70 case logging::LOG_WARNING: |
71 return Log::kWarning; | 71 return Log::kWarning; |
72 case logging::LOG_INFO: | 72 case logging::LOG_INFO: |
73 return Log::kInfo; | 73 return Log::kInfo; |
74 case logging::LOG_VERBOSE: | 74 case logging::LOG_VERBOSE: |
75 default: | 75 default: |
76 return Log::kDebug; | 76 return Log::kDebug; |
77 } | 77 } |
78 } | 78 } |
79 | 79 |
| 80 WebDriverLog* GetSessionLog() { |
| 81 Session* session = GetThreadLocalSession(); |
| 82 if (!session) |
| 83 return NULL; |
| 84 return session->driver_log.get(); |
| 85 } |
| 86 |
80 bool InternalIsVLogOn(int vlog_level) { | 87 bool InternalIsVLogOn(int vlog_level) { |
81 return GetLevelFromSeverity(vlog_level * -1) >= g_log_level; | 88 WebDriverLog* session_log = GetSessionLog(); |
| 89 Log::Level session_level = session_log ? session_log->min_level() : Log::kOff; |
| 90 Log::Level level = g_log_level < session_level ? g_log_level : session_level; |
| 91 return GetLevelFromSeverity(vlog_level * -1) >= level; |
82 } | 92 } |
83 | 93 |
84 bool HandleLogMessage(int severity, | 94 bool HandleLogMessage(int severity, |
85 const char* file, | 95 const char* file, |
86 int line, | 96 int line, |
87 size_t message_start, | 97 size_t message_start, |
88 const std::string& str) { | 98 const std::string& str) { |
89 Log::Level level = GetLevelFromSeverity(severity); | 99 Log::Level level = GetLevelFromSeverity(severity); |
90 if (level < g_log_level) | 100 std::string message = str.substr(message_start); |
91 return true; | |
92 | 101 |
93 std::string message = str.substr(message_start); | 102 if (level >= g_log_level) { |
94 const char* level_name = "UNKNOWN"; | 103 const char* level_name = LevelToName(level); |
95 switch (level) { | 104 std::string entry = base::StringPrintf( |
96 case Log::kDebug: | 105 "[%.3lf][%s]: %s", |
97 level_name = "DEBUG"; | 106 base::TimeDelta(base::TimeTicks::Now() - |
98 break; | 107 base::TimeTicks::FromInternalValue(g_start_time)) |
99 case Log::kInfo: | 108 .InSecondsF(), |
100 level_name = "INFO"; | 109 level_name, |
101 break; | 110 message.c_str()); |
102 case Log::kWarning: | 111 fprintf(stderr, "%s", entry.c_str()); |
103 level_name = "WARNING"; | 112 fflush(stderr); |
104 break; | |
105 case Log::kError: | |
106 level_name = "ERROR"; | |
107 break; | |
108 default: | |
109 break; | |
110 } | 113 } |
111 std::string entry = base::StringPrintf( | |
112 "[%.3lf][%s]: %s", | |
113 base::TimeDelta(base::TimeTicks::Now() - | |
114 base::TimeTicks::FromInternalValue(g_start_time)) | |
115 .InSecondsF(), | |
116 level_name, | |
117 message.c_str()); | |
118 | 114 |
119 fprintf(stderr, "%s", entry.c_str()); | 115 WebDriverLog* session_log = GetSessionLog(); |
120 fflush(stderr); | 116 if (session_log) |
| 117 session_log->AddEntry(level, message); |
| 118 |
121 return true; | 119 return true; |
122 } | 120 } |
123 | 121 |
124 } // namespace | 122 } // namespace |
125 | 123 |
126 bool WebDriverLog::NameToLevel(const std::string& name, Log::Level* out_level) { | 124 bool WebDriverLog::NameToLevel(const std::string& name, Log::Level* out_level) { |
127 for (size_t i = 0; i < arraysize(kNameToLevel); ++i) { | 125 for (size_t i = 0; i < arraysize(kNameToLevel); ++i) { |
128 if (name == kNameToLevel[i].name) { | 126 if (name == kNameToLevel[i].name) { |
129 *out_level = kNameToLevel[i].level; | 127 *out_level = kNameToLevel[i].level; |
130 return true; | 128 return true; |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 | 257 |
260 // Create "driver" log -- should always exist. | 258 // Create "driver" log -- should always exist. |
261 scoped_ptr<WebDriverLog> driver_log( | 259 scoped_ptr<WebDriverLog> driver_log( |
262 new WebDriverLog(kDriverLogType, driver_log_level)); | 260 new WebDriverLog(kDriverLogType, driver_log_level)); |
263 | 261 |
264 out_logs->swap(logs); | 262 out_logs->swap(logs); |
265 *out_driver_log = driver_log.Pass(); | 263 *out_driver_log = driver_log.Pass(); |
266 out_listeners->swap(listeners); | 264 out_listeners->swap(listeners); |
267 return Status(kOk); | 265 return Status(kOk); |
268 } | 266 } |
OLD | NEW |