Commit 8781ee97 authored by Alexander Alekhin's avatar Alexander Alekhin

core: write log messages via __android_log_print (logcat) too

parent 7e957878
...@@ -11,6 +11,10 @@ ...@@ -11,6 +11,10 @@
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#ifdef __ANDROID__
# include <android/log.h>
#endif
namespace cv { namespace cv {
namespace utils { namespace utils {
namespace logging { namespace logging {
...@@ -62,8 +66,7 @@ namespace internal { ...@@ -62,8 +66,7 @@ namespace internal {
void writeLogMessage(LogLevel logLevel, const char* message) void writeLogMessage(LogLevel logLevel, const char* message)
{ {
const int threadID = cv::utils::getThreadID(); const int threadID = cv::utils::getThreadID();
std::ostream* out = (logLevel <= LOG_LEVEL_WARNING) ? &std::cerr : &std::cout; std::ostringstream ss;
std::stringstream ss;
switch (logLevel) switch (logLevel)
{ {
case LOG_LEVEL_FATAL: ss << "[FATAL:" << threadID << "] " << message << std::endl; break; case LOG_LEVEL_FATAL: ss << "[FATAL:" << threadID << "] " << message << std::endl; break;
...@@ -75,6 +78,22 @@ void writeLogMessage(LogLevel logLevel, const char* message) ...@@ -75,6 +78,22 @@ void writeLogMessage(LogLevel logLevel, const char* message)
default: default:
return; return;
} }
#ifdef __ANDROID__
int android_logLevel = ANDROID_LOG_INFO;
switch (logLevel)
{
case LOG_LEVEL_FATAL: android_logLevel = ANDROID_LOG_FATAL; break;
case LOG_LEVEL_ERROR: android_logLevel = ANDROID_LOG_ERROR; break;
case LOG_LEVEL_WARNING: android_logLevel = ANDROID_LOG_WARN; break;
case LOG_LEVEL_INFO: android_logLevel = ANDROID_LOG_INFO; break;
case LOG_LEVEL_DEBUG: android_logLevel = ANDROID_LOG_DEBUG; break;
case LOG_LEVEL_VERBOSE: android_logLevel = ANDROID_LOG_VERBOSE; break;
default:
break;
}
__android_log_print(android_logLevel, "OpenCV/" CV_VERSION, "%s", ss.str().c_str());
#endif
std::ostream* out = (logLevel <= LOG_LEVEL_WARNING) ? &std::cerr : &std::cout;
(*out) << ss.str(); (*out) << ss.str();
if (logLevel <= LOG_LEVEL_WARNING) if (logLevel <= LOG_LEVEL_WARNING)
(*out) << std::flush; (*out) << std::flush;
......
...@@ -47,6 +47,8 @@ ...@@ -47,6 +47,8 @@
#include <opencv2/core/utils/configuration.private.hpp> #include <opencv2/core/utils/configuration.private.hpp>
#include <opencv2/core/utils/trace.private.hpp> #include <opencv2/core/utils/trace.private.hpp>
#include <opencv2/core/utils/logger.hpp>
namespace cv { namespace cv {
static Mutex* __initialization_mutex = NULL; static Mutex* __initialization_mutex = NULL;
...@@ -412,24 +414,24 @@ struct HWFeatures ...@@ -412,24 +414,24 @@ struct HWFeatures
have[CV_CPU_FP16] = true; have[CV_CPU_FP16] = true;
#elif defined __arm__ && defined __ANDROID__ #elif defined __arm__ && defined __ANDROID__
#if defined HAVE_CPUFEATURES #if defined HAVE_CPUFEATURES
__android_log_print(ANDROID_LOG_INFO, "OpenCV", "calling android_getCpuFeatures() ..."); CV_LOG_INFO(NULL, "calling android_getCpuFeatures() ...");
uint64_t features = android_getCpuFeatures(); uint64_t features = android_getCpuFeatures();
__android_log_print(ANDROID_LOG_INFO, "OpenCV", "calling android_getCpuFeatures() ... Done (%llx)", features); CV_LOG_INFO(NULL, cv::format("calling android_getCpuFeatures() ... Done (%llx)", (long long)features));
have[CV_CPU_NEON] = (features & ANDROID_CPU_ARM_FEATURE_NEON) != 0; have[CV_CPU_NEON] = (features & ANDROID_CPU_ARM_FEATURE_NEON) != 0;
have[CV_CPU_FP16] = (features & ANDROID_CPU_ARM_FEATURE_VFP_FP16) != 0; have[CV_CPU_FP16] = (features & ANDROID_CPU_ARM_FEATURE_VFP_FP16) != 0;
#else #else
__android_log_print(ANDROID_LOG_INFO, "OpenCV", "cpufeatures library is not available for CPU detection"); CV_LOG_INFO(NULL, "cpufeatures library is not available for CPU detection");
#if CV_NEON #if CV_NEON
__android_log_print(ANDROID_LOG_INFO, "OpenCV", "- NEON instructions is enabled via build flags"); CV_LOG_INFO(NULL, "- NEON instructions is enabled via build flags");
have[CV_CPU_NEON] = true; have[CV_CPU_NEON] = true;
#else #else
__android_log_print(ANDROID_LOG_INFO, "OpenCV", "- NEON instructions is NOT enabled via build flags"); CV_LOG_INFO(NULL, "- NEON instructions is NOT enabled via build flags");
#endif #endif
#if CV_FP16 #if CV_FP16
__android_log_print(ANDROID_LOG_INFO, "OpenCV", "- FP16 instructions is enabled via build flags"); CV_LOG_INFO(NULL, "- FP16 instructions is enabled via build flags");
have[CV_CPU_FP16] = true; have[CV_CPU_FP16] = true;
#else #else
__android_log_print(ANDROID_LOG_INFO, "OpenCV", "- FP16 instructions is NOT enabled via build flags"); CV_LOG_INFO(NULL, "- FP16 instructions is NOT enabled via build flags");
#endif #endif
#endif #endif
#elif defined __arm__ #elif defined __arm__
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment