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

Side by Side Diff: base/logging_win.cc

Issue 9584017: New test infrastructure for producing verbose logs in failing tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 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 "base/logging_win.h" 5 #include "base/logging_win.h"
6 #include "base/memory/singleton.h" 6 #include "base/memory/singleton.h"
7 #include <initguid.h> // NOLINT 7 #include <initguid.h> // NOLINT
8 8
9 namespace logging { 9 namespace logging {
10 10
11 using base::win::EtwEventLevel; 11 using base::win::EtwEventLevel;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 50
51 // Bail if we're not logging, not at that level, 51 // Bail if we're not logging, not at that level,
52 // or if we're post-atexit handling. 52 // or if we're post-atexit handling.
53 LogEventProvider* provider = LogEventProvider::GetInstance(); 53 LogEventProvider* provider = LogEventProvider::GetInstance();
54 if (provider == NULL || level > provider->enable_level()) 54 if (provider == NULL || level > provider->enable_level())
55 return false; 55 return false;
56 56
57 // And now log the event. 57 // And now log the event.
58 if (provider->enable_flags() & ENABLE_LOG_MESSAGE_ONLY) { 58 if (provider->enable_flags() & ENABLE_LOG_MESSAGE_ONLY) {
59 EtwMofEvent<1> event(kLogEventId, LOG_MESSAGE, level); 59 EtwMofEvent<1> event(kLogEventId, LOG_MESSAGE, level);
60 event.SetField(0, message.length() + 1 - message_start, 60 if (provider->enable_flags() & ENABLE_DETAILED_LOG_MESSAGE) {
61 message.c_str() + message_start); 61 event.SetField(0, message.length() + 1, message.c_str());
62 } else {
63 event.SetField(0, message.length() + 1 - message_start,
64 message.c_str() + message_start);
65 }
62 66
63 provider->Log(event.get()); 67 provider->Log(event.get());
64 } else { 68 } else {
65 const size_t kMaxBacktraceDepth = 32; 69 const size_t kMaxBacktraceDepth = 32;
66 void* backtrace[kMaxBacktraceDepth]; 70 void* backtrace[kMaxBacktraceDepth];
67 DWORD depth = 0; 71 DWORD depth = 0;
68 72
69 // Capture a stack trace if one is requested. 73 // Capture a stack trace if one is requested.
70 // requested per our enable flags. 74 // requested per our enable flags.
71 if (provider->enable_flags() & ENABLE_STACK_TRACE_CAPTURE) 75 if (provider->enable_flags() & ENABLE_STACK_TRACE_CAPTURE)
72 depth = CaptureStackBackTrace(2, kMaxBacktraceDepth, backtrace, NULL); 76 depth = CaptureStackBackTrace(2, kMaxBacktraceDepth, backtrace, NULL);
73 77
74 EtwMofEvent<5> event(kLogEventId, LOG_MESSAGE_FULL, level); 78 EtwMofEvent<5> event(kLogEventId, LOG_MESSAGE_FULL, level);
75 if (file == NULL) 79 if (file == NULL)
76 file = ""; 80 file = "";
77 81
78 // Add the stack trace. 82 // Add the stack trace.
79 event.SetField(0, sizeof(depth), &depth); 83 event.SetField(0, sizeof(depth), &depth);
80 event.SetField(1, sizeof(backtrace[0]) * depth, &backtrace); 84 event.SetField(1, sizeof(backtrace[0]) * depth, &backtrace);
81 // The line. 85 // The line.
82 event.SetField(2, sizeof(line), &line); 86 event.SetField(2, sizeof(line), &line);
83 // The file. 87 // The file.
84 event.SetField(3, strlen(file) + 1, file); 88 event.SetField(3, strlen(file) + 1, file);
85 // And finally the message. 89 // And finally the message.
86 event.SetField(4, message.length() + 1 - message_start, 90 if (provider->enable_flags() & ENABLE_DETAILED_LOG_MESSAGE) {
87 message.c_str() + message_start); 91 event.SetField(4, message.length() + 1, message.c_str());
92 } else {
93 event.SetField(4, message.length() + 1 - message_start,
94 message.c_str() + message_start);
95 }
88 96
89 provider->Log(event.get()); 97 provider->Log(event.get());
90 } 98 }
91 99
92 // Don't increase verbosity in other log destinations. 100 // Don't increase verbosity in other log destinations.
93 if (severity < provider->old_log_level_) 101 if (severity < provider->old_log_level_)
94 return true; 102 return true;
95 103
96 return false; 104 return false;
97 } 105 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 SetMinLogLevel(TRACE_LEVEL_INFORMATION - level); 138 SetMinLogLevel(TRACE_LEVEL_INFORMATION - level);
131 } 139 }
132 } 140 }
133 141
134 void LogEventProvider::OnEventsDisabled() { 142 void LogEventProvider::OnEventsDisabled() {
135 // Restore the old log level. 143 // Restore the old log level.
136 SetMinLogLevel(old_log_level_); 144 SetMinLogLevel(old_log_level_);
137 } 145 }
138 146
139 } // namespace logging 147 } // namespace logging
OLDNEW
« no previous file with comments | « base/logging_win.h ('k') | chrome/chrome_tests.gypi » ('j') | chrome/test/base/file_logger_win.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698