Index: runtime/vm/service_event.cc |
diff --git a/runtime/vm/service_event.cc b/runtime/vm/service_event.cc |
index a53ace2d9343db46582249460aef121a31a817ad..edbb502f2cea91e959b93fff8fc13bb1dde493ac 100644 |
--- a/runtime/vm/service_event.cc |
+++ b/runtime/vm/service_event.cc |
@@ -89,6 +89,8 @@ const char* ServiceEvent::KindAsCString() const { |
return "Inspect"; |
case kEmbedder: |
return embedder_kind(); |
+ case kLogging: |
+ return "_Logging"; |
case kDebuggerSettingsUpdate: |
return "_DebuggerSettingsUpdate"; |
case kIllegal: |
@@ -126,6 +128,9 @@ const char* ServiceEvent::stream_id() const { |
case kEmbedder: |
return embedder_stream_id_; |
+ case kLogging: |
+ return Service::logging_stream.id(); |
+ |
default: |
UNREACHABLE(); |
return NULL; |
@@ -135,9 +140,7 @@ const char* ServiceEvent::stream_id() const { |
void ServiceEvent::PrintJSON(JSONStream* js) const { |
JSONObject jsobj(js); |
- jsobj.AddProperty("type", "Event"); |
- jsobj.AddProperty("kind", KindAsCString()); |
- jsobj.AddProperty("isolate", isolate()); |
+ PrintJSONHeader(&jsobj); |
if (kind() == kPauseBreakpoint) { |
JSONArray jsarr(&jsobj, "pauseBreakpoints"); |
// TODO(rmacnak): If we are paused at more than one breakpoint, |
@@ -177,6 +180,25 @@ void ServiceEvent::PrintJSON(JSONStream* js) const { |
if (bytes() != NULL) { |
jsobj.AddPropertyBase64("bytes", bytes(), bytes_length()); |
} |
+ if (kind() == kLogging) { |
+ JSONObject logRecord(&jsobj, "logRecord"); |
+ logRecord.AddProperty64("sequenceNumber", log_record_.sequence_number); |
+ logRecord.AddPropertyTimeMillis("time", log_record_.timestamp); |
+ logRecord.AddProperty64("level", log_record_.level); |
+ logRecord.AddProperty("loggerName", *(log_record_.name)); |
+ logRecord.AddProperty("message", *(log_record_.message)); |
+ logRecord.AddProperty("zone", *(log_record_.zone)); |
+ logRecord.AddProperty("error", *(log_record_.error)); |
+ logRecord.AddProperty("stackTrace", *(log_record_.stack_trace)); |
+ } |
+} |
+ |
+ |
+void ServiceEvent::PrintJSONHeader(JSONObject* jsobj) const { |
+ ASSERT(jsobj != NULL); |
+ jsobj->AddProperty("type", "Event"); |
+ jsobj->AddProperty("kind", KindAsCString()); |
+ jsobj->AddProperty("isolate", isolate()); |
} |
} // namespace dart |