| Index: base/debug/trace_event_impl.cc
|
| diff --git a/base/debug/trace_event_impl.cc b/base/debug/trace_event_impl.cc
|
| index af5591b91232dd094333f49c1e39c9c03b033fd7..4d637cdabfbe4851e15b5d5f0be4103227bf8524 100644
|
| --- a/base/debug/trace_event_impl.cc
|
| +++ b/base/debug/trace_event_impl.cc
|
| @@ -6,7 +6,9 @@
|
|
|
| #include <algorithm>
|
|
|
| +#include "base/base_switches.h"
|
| #include "base/bind.h"
|
| +#include "base/command_line.h"
|
| #include "base/debug/leak_annotations.h"
|
| #include "base/debug/trace_event.h"
|
| #include "base/format_macros.h"
|
| @@ -535,6 +537,29 @@ void TraceEvent::AppendAsJSON(std::string* out) const {
|
| *out += "}";
|
| }
|
|
|
| +void TraceEvent::AppendPrettyPrinted(std::ostringstream* out) const {
|
| + *out << name_ << "[";
|
| + *out << TraceLog::GetCategoryGroupName(category_group_enabled_);
|
| + *out << "]";
|
| + if (arg_names_[0]) {
|
| + *out << ", {";
|
| + for (int i = 0; i < kTraceMaxNumArgs && arg_names_[i]; ++i) {
|
| + if (i > 0)
|
| + *out << ", ";
|
| + *out << arg_names_[i] << ":";
|
| + std::string value_as_text;
|
| +
|
| + if (arg_types_[i] == TRACE_VALUE_TYPE_CONVERTABLE)
|
| + convertable_values_[i]->AppendAsTraceFormat(&value_as_text);
|
| + else
|
| + AppendValueAsJSON(arg_types_[i], arg_values_[i], &value_as_text);
|
| +
|
| + *out << value_as_text;
|
| + }
|
| + *out << "}";
|
| + }
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| //
|
| // TraceResultBuffer
|
| @@ -798,6 +823,19 @@ TraceLog::TraceLog()
|
| SetProcessID(0);
|
| #else
|
| SetProcessID(static_cast<int>(GetCurrentProcId()));
|
| +
|
| + // NaCl also shouldn't access the command line.
|
| + if (CommandLine::InitializedForCurrentProcess() &&
|
| + CommandLine::ForCurrentProcess()->HasSwitch(switches::kTraceToConsole)) {
|
| + std::string category_string =
|
| + CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
| + switches::kTraceToConsole);
|
| +
|
| + if (category_string.empty())
|
| + category_string = "*";
|
| +
|
| + SetEnabled(CategoryFilter(category_string), ECHO_TO_CONSOLE);
|
| + }
|
| #endif
|
|
|
| logged_events_.reset(GetTraceBuffer());
|
| @@ -1064,7 +1102,7 @@ void TraceLog::SetNotificationCallback(
|
| TraceBuffer* TraceLog::GetTraceBuffer() {
|
| if (trace_options_ & RECORD_CONTINUOUSLY)
|
| return new TraceBufferRingBuffer();
|
| - else if (trace_options_ & ECHO_TO_VLOG)
|
| + else if (trace_options_ & ECHO_TO_CONSOLE)
|
| return new TraceBufferDiscardsEvents();
|
| return new TraceBufferVector();
|
| }
|
| @@ -1136,7 +1174,7 @@ void TraceLog::AddTraceEventWithThreadIdAndTimestamp(
|
| DCHECK(name);
|
|
|
| TimeDelta duration;
|
| - if (phase == TRACE_EVENT_PHASE_END && trace_options_ & ECHO_TO_VLOG) {
|
| + if (phase == TRACE_EVENT_PHASE_END && trace_options_ & ECHO_TO_CONSOLE) {
|
| duration = timestamp - thread_event_start_times_[thread_id].top();
|
| thread_event_start_times_[thread_id].pop();
|
| }
|
| @@ -1194,7 +1232,14 @@ void TraceLog::AddTraceEventWithThreadIdAndTimestamp(
|
| }
|
| }
|
|
|
| - if (trace_options_ & ECHO_TO_VLOG) {
|
| + TraceEvent trace_event(thread_id,
|
| + now, phase, category_group_enabled, name, id,
|
| + num_args, arg_names, arg_types, arg_values,
|
| + convertable_values, flags);
|
| +
|
| + logged_events_->AddEvent(trace_event);
|
| +
|
| + if (trace_options_ & ECHO_TO_CONSOLE) {
|
| std::string thread_name = thread_names_[thread_id];
|
| if (thread_colors_.find(thread_name) == thread_colors_.end())
|
| thread_colors_[thread_name] = (thread_colors_.size() % 6) + 1;
|
| @@ -1212,19 +1257,13 @@ void TraceLog::AddTraceEventWithThreadIdAndTimestamp(
|
| for (size_t i = 0; i < depth; ++i)
|
| log << "| ";
|
|
|
| - log << base::StringPrintf("'%c', %s", phase, name);
|
| -
|
| + trace_event.AppendPrettyPrinted(&log);
|
| if (phase == TRACE_EVENT_PHASE_END)
|
| log << base::StringPrintf(" (%.3f ms)", duration.InMillisecondsF());
|
|
|
| - VLOG(0) << log.str() << "\x1b[0;m";
|
| + LOG(ERROR) << log.str() << "\x1b[0;m";
|
| }
|
|
|
| - logged_events_->AddEvent(TraceEvent(thread_id,
|
| - now, phase, category_group_enabled, name, id,
|
| - num_args, arg_names, arg_types, arg_values,
|
| - convertable_values, flags));
|
| -
|
| if (logged_events_->IsFull())
|
| notifier.AddNotificationWhileLocked(TRACE_BUFFER_FULL);
|
|
|
| @@ -1232,7 +1271,7 @@ void TraceLog::AddTraceEventWithThreadIdAndTimestamp(
|
| notifier.AddNotificationWhileLocked(EVENT_WATCH_NOTIFICATION);
|
| } while (0); // release lock
|
|
|
| - if (phase == TRACE_EVENT_PHASE_BEGIN && trace_options_ & ECHO_TO_VLOG)
|
| + if (phase == TRACE_EVENT_PHASE_BEGIN && trace_options_ & ECHO_TO_CONSOLE)
|
| thread_event_start_times_[thread_id].push(timestamp);
|
|
|
| notifier.SendNotificationIfAny();
|
|
|