/* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ syntax = "proto2"; package perfetto.protos; import "protos/perfetto/common/android_log_constants.proto"; message AndroidLogPacket { message LogEvent { // The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from. optional AndroidLogId log_id = 1; // PID (TGID), TID and UID of the task that emitted the event. optional int32 pid = 2; optional int32 tid = 3; optional int32 uid = 4; // Timestamp [ns]. The clock source is CLOCK_REALTIME, unlike many other // Perfetto trace events that instead use CLOCK_BOOTTIME. The trace // processor will take care of realigning clocks using the ClockSnapshot(s). optional uint64 timestamp = 5; // When log_id == LID_EVENTS, |tag| corresponds to the event name defined in // the second column of /system/etc/event-log-tags. For all other events, // |tag| is the app-specified argument passed to __android_log_write(). optional string tag = 6; // Empty when log_id == LID_EVENTS. optional AndroidLogPriority prio = 7; // Empty when log_id == LID_EVENTS. optional string message = 8; message Arg { optional string name = 1; oneof value { int64 int_value = 2; float float_value = 3; string string_value = 4; } } // Only populated when log_id == LID_EVENTS. repeated Arg args = 9; } repeated LogEvent events = 1; // Stats are emitted only upon Flush() and are monotonic (i.e. they are // absolute counters since the beginning of the lifetime of the tracing // session and NOT relative to the previous Stats snapshot). message Stats { // Total number of log events seen, including errors and skipped entries // (num of events stored in the trace = total - failed - skipped). optional uint64 num_total = 1; // Parser failures. optional uint64 num_failed = 2; // Messages skipped due to filters. optional uint64 num_skipped = 3; } optional Stats stats = 2; }