// Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary // source code may only be used and distributed under the Widevine Master // License Agreement. // // Log - implemented using the standard Android logging mechanism /* * Qutoing from system/core/include/log/log.h: * Normally we strip ALOGV (VERBOSE messages) from release builds. * You can modify this (for example with "#define LOG_NDEBUG 0" * at the top of your source file) to change that behavior. */ #ifndef LOG_NDEBUG #ifdef NDEBUG #define LOG_NDEBUG 1 #else #define LOG_NDEBUG 0 #endif #endif #define LOG_TAG "WVCdm" #define LOG_BUF_SIZE 1024 #include "log.h" #include #include #include #include /* * Uncomment the line below if you want to have the LOGV messages to print * IMPORTANT : this will affect all of CDM */ // #define LOG_NDEBUG 0 namespace wvcdm { LogPriority g_cutoff = LOG_VERBOSE; void InitLogging() {} void Log(const char* file, const char* function, int line, LogPriority level, const char* format, ...) { const char* filename = strrchr(file, '/'); filename = filename == nullptr ? file : filename + 1; char buf[LOG_BUF_SIZE]; int len = snprintf(buf, LOG_BUF_SIZE, "[%s(%d):%s] ", filename, line, function); if (len < 0) len = 0; if (static_cast(len) < sizeof(buf)) { va_list ap; va_start(ap, format); vsnprintf(buf+len, LOG_BUF_SIZE-len, format, ap); va_end(ap); } android_LogPriority prio = ANDROID_LOG_VERBOSE; switch(level) { case LOG_ERROR: prio = ANDROID_LOG_ERROR; break; case LOG_WARN: prio = ANDROID_LOG_WARN; break; case LOG_INFO: prio = ANDROID_LOG_INFO; break; case LOG_DEBUG: prio = ANDROID_LOG_DEBUG; break; #if LOG_NDEBUG case LOG_VERBOSE: return; #else case LOG_VERBOSE: prio = ANDROID_LOG_VERBOSE; break; #endif } __android_log_write(prio, LOG_TAG, buf); } } // namespace wvcdm