From 5240f204edc23d74f2f98da1c3c3f60bf2c6602f Mon Sep 17 00:00:00 2001 From: James Hawkins Date: Fri, 15 Sep 2017 16:01:57 -0700 Subject: [PATCH] bootstat: Log the ro.boot.bootreason property through the new platform_reason Tron field. Bug: 63584589 Test: none Change-Id: Ifd6f3d4432d764b5ffc7db10dec5e573214f7c97 --- bootstat/bootstat.cpp | 3 +++ libmetricslogger/Android.bp | 9 ++++++--- .../include/metricslogger/metrics_logger.h | 12 ++++++++++++ libmetricslogger/metrics_logger.cpp | 7 +++++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/bootstat/bootstat.cpp b/bootstat/bootstat.cpp index a0a9307a9..3b8b707ab 100644 --- a/bootstat/bootstat.cpp +++ b/bootstat/bootstat.cpp @@ -714,6 +714,9 @@ void RecordBootComplete() { // property. void RecordBootReason() { const std::string reason(GetProperty(bootloader_reboot_reason_property)); + android::metricslogger::LogMultiAction(android::metricslogger::ACTION_BOOT, + android::metricslogger::FIELD_PLATFORM_REASON, + reason); // Log the raw bootloader_boot_reason property value. int32_t boot_reason = BootReasonStrToEnum(reason); diff --git a/libmetricslogger/Android.bp b/libmetricslogger/Android.bp index c692d1fa3..9b179d174 100644 --- a/libmetricslogger/Android.bp +++ b/libmetricslogger/Android.bp @@ -19,10 +19,13 @@ cc_defaults { "-Wextra", "-Werror", - // 524291 corresponds to sysui_histogram, from - // frameworks/base/core/java/com/android/internal/logging/EventLogTags.logtags - "-DHISTOGRAM_LOG_TAG=524292", + // The following defines map logtag IDs as represented by: + // frameworks/base/core/java/com/android/internal/logging/EventLogTags.logtags + // + // E.g., 524290 corresponds to sysui_count. "-DCOUNT_LOG_TAG=524290", + "-DHISTOGRAM_LOG_TAG=524292", + "-DMULTI_ACTION_LOG_TAG=524292", ], } diff --git a/libmetricslogger/include/metricslogger/metrics_logger.h b/libmetricslogger/include/metricslogger/metrics_logger.h index 36e124d9c..fcabcc941 100644 --- a/libmetricslogger/include/metricslogger/metrics_logger.h +++ b/libmetricslogger/include/metricslogger/metrics_logger.h @@ -28,14 +28,26 @@ void LogHistogram(const std::string& event, int32_t data); // log buffer. void LogCounter(const std::string& name, int32_t val); +// Logs a Tron multi_action with category|category| containing the string +// |value| in the field |field|. +void LogMultiAction(int32_t category, int32_t field, const std::string& value); + // TODO: replace these with the metric_logger.proto definitions enum { LOGBUILDER_CATEGORY = 757, + LOGBUILDER_TYPE = 758, LOGBUILDER_NAME = 799, LOGBUILDER_BUCKET = 801, LOGBUILDER_VALUE = 802, LOGBUILDER_COUNTER = 803, LOGBUILDER_HISTOGRAM = 804, + + ACTION_BOOT = 1092, + FIELD_PLATFORM_REASON = 1093, +}; + +enum { + TYPE_ACTION = 4, }; } // namespace metricslogger diff --git a/libmetricslogger/metrics_logger.cpp b/libmetricslogger/metrics_logger.cpp index 6f65e10f1..a0dcf09cd 100644 --- a/libmetricslogger/metrics_logger.cpp +++ b/libmetricslogger/metrics_logger.cpp @@ -37,5 +37,12 @@ void LogCounter(const std::string& name, int32_t val) { << val << LOG_ID_EVENTS; } +// Mirror com.android.internal.logging.MetricsLogger#action(). +void LogMultiAction(int32_t category, int32_t field, const std::string& value) { + android_log_event_list log(MULTI_ACTION_LOG_TAG); + log << LOGBUILDER_CATEGORY << category << LOGBUILDER_TYPE << TYPE_ACTION + << field << value << LOG_ID_EVENTS; +} + } // namespace metricslogger } // namespace android