Loading libmetricslogger/Android.bp +7 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,13 @@ cc_library_shared { defaults: ["metricslogger_defaults"], } // static version of libmetricslogger, needed by a few art static binaries cc_library_static { name: "libmetricslogger_static", srcs: metricslogger_lib_src_files, defaults: ["metricslogger_defaults"], } // metricslogger shared library, debug // ----------------------------------------------------------------------------- cc_library_shared { Loading libmetricslogger/include/metricslogger/metrics_logger.h +41 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ * limitations under the License. */ #include <log/log_event_list.h> #include <cstdint> #include <string> Loading @@ -32,6 +33,34 @@ void LogCounter(const std::string& name, int32_t val); // |value| in the field |field|. void LogMultiAction(int32_t category, int32_t field, const std::string& value); // Logs a Tron complex event. // // A complex event can include data in a structure not suppored by the other // log event types above. // // Note that instances of this class are single use. You must call Record() // to write the event to the event log. class ComplexEventLogger { private: android_log_event_list logger; public: // Create a complex event with category|category|. explicit ComplexEventLogger(int category); // Add tagged data to the event, with the given tag and integer value. void AddTaggedData(int tag, int32_t value); // Add tagged data to the event, with the given tag and string value. void AddTaggedData(int tag, const std::string& value); // Add tagged data to the event, with the given tag and integer value. void AddTaggedData(int tag, int64_t value); // Add tagged data to the event, with the given tag and float value. void AddTaggedData(int tag, float value); // Record this event. This method can only be used once per instance // of ComplexEventLogger. Do not made any subsequent calls to AddTaggedData // after recording an event. void Record(); }; // TODO: replace these with the metric_logger.proto definitions enum { LOGBUILDER_CATEGORY = 757, Loading @@ -44,11 +73,23 @@ enum { ACTION_BOOT = 1098, FIELD_PLATFORM_REASON = 1099, ACTION_HIDDEN_API_ACCESSED = 1391, FIELD_HIDDEN_API_ACCESS_METHOD = 1392, FIELD_HIDDEN_API_ACCESS_DENIED = 1393, FIELD_HIDDEN_API_SIGNATURE = 1394, }; enum { TYPE_ACTION = 4, }; enum { ACCESS_METHOD_NONE = 0, ACCESS_METHOD_REFLECTION = 1, ACCESS_METHOD_JNI = 2, ACCESS_METHOD_LINKING = 3, }; } // namespace metricslogger } // namespace android libmetricslogger/metrics_logger.cpp +29 −0 Original line number Diff line number Diff line Loading @@ -23,9 +23,14 @@ namespace { #ifdef __ANDROID__ EventTagMap* kEventTagMap = android_openEventTagMap(nullptr); const int kSysuiMultiActionTag = android_lookupEventTagNum( kEventTagMap, "sysui_multi_action", "(content|4)", ANDROID_LOG_UNKNOWN); #else // android_openEventTagMap does not work on host builds. const int kSysuiMultiActionTag = 0; #endif } // namespace Loading Loading @@ -53,5 +58,29 @@ void LogMultiAction(int32_t category, int32_t field, const std::string& value) { << field << value << LOG_ID_EVENTS; } ComplexEventLogger::ComplexEventLogger(int category) : logger(kSysuiMultiActionTag) { logger << LOGBUILDER_CATEGORY << category; } void ComplexEventLogger::AddTaggedData(int tag, int32_t value) { logger << tag << value; } void ComplexEventLogger::AddTaggedData(int tag, const std::string& value) { logger << tag << value; } void ComplexEventLogger::AddTaggedData(int tag, int64_t value) { logger << tag << value; } void ComplexEventLogger::AddTaggedData(int tag, float value) { logger << tag << value; } void ComplexEventLogger::Record() { logger << LOG_ID_EVENTS; } } // namespace metricslogger } // namespace android Loading
libmetricslogger/Android.bp +7 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,13 @@ cc_library_shared { defaults: ["metricslogger_defaults"], } // static version of libmetricslogger, needed by a few art static binaries cc_library_static { name: "libmetricslogger_static", srcs: metricslogger_lib_src_files, defaults: ["metricslogger_defaults"], } // metricslogger shared library, debug // ----------------------------------------------------------------------------- cc_library_shared { Loading
libmetricslogger/include/metricslogger/metrics_logger.h +41 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ * limitations under the License. */ #include <log/log_event_list.h> #include <cstdint> #include <string> Loading @@ -32,6 +33,34 @@ void LogCounter(const std::string& name, int32_t val); // |value| in the field |field|. void LogMultiAction(int32_t category, int32_t field, const std::string& value); // Logs a Tron complex event. // // A complex event can include data in a structure not suppored by the other // log event types above. // // Note that instances of this class are single use. You must call Record() // to write the event to the event log. class ComplexEventLogger { private: android_log_event_list logger; public: // Create a complex event with category|category|. explicit ComplexEventLogger(int category); // Add tagged data to the event, with the given tag and integer value. void AddTaggedData(int tag, int32_t value); // Add tagged data to the event, with the given tag and string value. void AddTaggedData(int tag, const std::string& value); // Add tagged data to the event, with the given tag and integer value. void AddTaggedData(int tag, int64_t value); // Add tagged data to the event, with the given tag and float value. void AddTaggedData(int tag, float value); // Record this event. This method can only be used once per instance // of ComplexEventLogger. Do not made any subsequent calls to AddTaggedData // after recording an event. void Record(); }; // TODO: replace these with the metric_logger.proto definitions enum { LOGBUILDER_CATEGORY = 757, Loading @@ -44,11 +73,23 @@ enum { ACTION_BOOT = 1098, FIELD_PLATFORM_REASON = 1099, ACTION_HIDDEN_API_ACCESSED = 1391, FIELD_HIDDEN_API_ACCESS_METHOD = 1392, FIELD_HIDDEN_API_ACCESS_DENIED = 1393, FIELD_HIDDEN_API_SIGNATURE = 1394, }; enum { TYPE_ACTION = 4, }; enum { ACCESS_METHOD_NONE = 0, ACCESS_METHOD_REFLECTION = 1, ACCESS_METHOD_JNI = 2, ACCESS_METHOD_LINKING = 3, }; } // namespace metricslogger } // namespace android
libmetricslogger/metrics_logger.cpp +29 −0 Original line number Diff line number Diff line Loading @@ -23,9 +23,14 @@ namespace { #ifdef __ANDROID__ EventTagMap* kEventTagMap = android_openEventTagMap(nullptr); const int kSysuiMultiActionTag = android_lookupEventTagNum( kEventTagMap, "sysui_multi_action", "(content|4)", ANDROID_LOG_UNKNOWN); #else // android_openEventTagMap does not work on host builds. const int kSysuiMultiActionTag = 0; #endif } // namespace Loading Loading @@ -53,5 +58,29 @@ void LogMultiAction(int32_t category, int32_t field, const std::string& value) { << field << value << LOG_ID_EVENTS; } ComplexEventLogger::ComplexEventLogger(int category) : logger(kSysuiMultiActionTag) { logger << LOGBUILDER_CATEGORY << category; } void ComplexEventLogger::AddTaggedData(int tag, int32_t value) { logger << tag << value; } void ComplexEventLogger::AddTaggedData(int tag, const std::string& value) { logger << tag << value; } void ComplexEventLogger::AddTaggedData(int tag, int64_t value) { logger << tag << value; } void ComplexEventLogger::AddTaggedData(int tag, float value) { logger << tag << value; } void ComplexEventLogger::Record() { logger << LOG_ID_EVENTS; } } // namespace metricslogger } // namespace android