1*bebae9c0SAndroid Build Coastguard Worker /* 2*bebae9c0SAndroid Build Coastguard Worker * Copyright (C) 2010 The Android Open Source Project 3*bebae9c0SAndroid Build Coastguard Worker * 4*bebae9c0SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*bebae9c0SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*bebae9c0SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*bebae9c0SAndroid Build Coastguard Worker * 8*bebae9c0SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*bebae9c0SAndroid Build Coastguard Worker * 10*bebae9c0SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*bebae9c0SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*bebae9c0SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*bebae9c0SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*bebae9c0SAndroid Build Coastguard Worker * limitations under the License. 15*bebae9c0SAndroid Build Coastguard Worker */ 16*bebae9c0SAndroid Build Coastguard Worker 17*bebae9c0SAndroid Build Coastguard Worker // Logging 18*bebae9c0SAndroid Build Coastguard Worker 19*bebae9c0SAndroid Build Coastguard Worker // In order of decreasing priority, the log priority levels are: 20*bebae9c0SAndroid Build Coastguard Worker // Assert 21*bebae9c0SAndroid Build Coastguard Worker // E(rror) 22*bebae9c0SAndroid Build Coastguard Worker // W(arn) 23*bebae9c0SAndroid Build Coastguard Worker // I(nfo) 24*bebae9c0SAndroid Build Coastguard Worker // D(ebug) 25*bebae9c0SAndroid Build Coastguard Worker // V(erbose) 26*bebae9c0SAndroid Build Coastguard Worker // Debug and verbose are usually compiled out except during development. 27*bebae9c0SAndroid Build Coastguard Worker 28*bebae9c0SAndroid Build Coastguard Worker /** These values match the definitions in system/core/include/cutils/log.h */ 29*bebae9c0SAndroid Build Coastguard Worker #define SLAndroidLogLevel_Unknown 0 30*bebae9c0SAndroid Build Coastguard Worker #define SLAndroidLogLevel_Default 1 31*bebae9c0SAndroid Build Coastguard Worker #define SLAndroidLogLevel_Verbose 2 32*bebae9c0SAndroid Build Coastguard Worker #define SLAndroidLogLevel_Debug 3 33*bebae9c0SAndroid Build Coastguard Worker #define SLAndroidLogLevel_Info 4 34*bebae9c0SAndroid Build Coastguard Worker #define SLAndroidLogLevel_Warn 5 35*bebae9c0SAndroid Build Coastguard Worker #define SLAndroidLogLevel_Error 6 36*bebae9c0SAndroid Build Coastguard Worker #define SLAndroidLogLevel_Fatal 7 37*bebae9c0SAndroid Build Coastguard Worker #define SLAndroidLogLevel_Silent 8 38*bebae9c0SAndroid Build Coastguard Worker 39*bebae9c0SAndroid Build Coastguard Worker // USE_LOG is the minimum log priority level that is enabled at build time. 40*bebae9c0SAndroid Build Coastguard Worker // It is configured in Android.mk but can be overridden per source file. 41*bebae9c0SAndroid Build Coastguard Worker #ifndef USE_LOG 42*bebae9c0SAndroid Build Coastguard Worker #define USE_LOG SLAndroidLogLevel_Info 43*bebae9c0SAndroid Build Coastguard Worker #endif 44*bebae9c0SAndroid Build Coastguard Worker 45*bebae9c0SAndroid Build Coastguard Worker 46*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID 47*bebae9c0SAndroid Build Coastguard Worker 48*bebae9c0SAndroid Build Coastguard Worker // The usual Android LOGx macros are not available, so we use the lower-level APIs. 49*bebae9c0SAndroid Build Coastguard Worker extern const char slLogTag[]; 50*bebae9c0SAndroid Build Coastguard Worker 51*bebae9c0SAndroid Build Coastguard Worker // can't disable SL_LOGF 52*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGF(...) __android_log_print(SLAndroidLogLevel_Fatal, slLogTag, __VA_ARGS__) 53*bebae9c0SAndroid Build Coastguard Worker 54*bebae9c0SAndroid Build Coastguard Worker #if (USE_LOG <= SLAndroidLogLevel_Error) 55*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGE(...) __android_log_print(SLAndroidLogLevel_Error, slLogTag, __VA_ARGS__) 56*bebae9c0SAndroid Build Coastguard Worker #else 57*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGE(...) do { } while (0) 58*bebae9c0SAndroid Build Coastguard Worker #endif 59*bebae9c0SAndroid Build Coastguard Worker 60*bebae9c0SAndroid Build Coastguard Worker #if (USE_LOG <= SLAndroidLogLevel_Warn) 61*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGW(...) __android_log_print(SLAndroidLogLevel_Warn, slLogTag, __VA_ARGS__) 62*bebae9c0SAndroid Build Coastguard Worker #else 63*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGW(...) do { } while (0) 64*bebae9c0SAndroid Build Coastguard Worker #endif 65*bebae9c0SAndroid Build Coastguard Worker 66*bebae9c0SAndroid Build Coastguard Worker #if (USE_LOG <= SLAndroidLogLevel_Info) 67*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGI(...) __android_log_print(SLAndroidLogLevel_Info, slLogTag, __VA_ARGS__) 68*bebae9c0SAndroid Build Coastguard Worker #else 69*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGI(...) do { } while (0) 70*bebae9c0SAndroid Build Coastguard Worker #endif 71*bebae9c0SAndroid Build Coastguard Worker 72*bebae9c0SAndroid Build Coastguard Worker #if (USE_LOG <= SLAndroidLogLevel_Debug) 73*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGD(...) __android_log_print(SLAndroidLogLevel_Debug, slLogTag, __VA_ARGS__) 74*bebae9c0SAndroid Build Coastguard Worker #else 75*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGD(...) do { } while (0) 76*bebae9c0SAndroid Build Coastguard Worker #endif 77*bebae9c0SAndroid Build Coastguard Worker 78*bebae9c0SAndroid Build Coastguard Worker #if (USE_LOG <= SLAndroidLogLevel_Verbose) 79*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGV(...) __android_log_print(SLAndroidLogLevel_Verbose, slLogTag, __VA_ARGS__) 80*bebae9c0SAndroid Build Coastguard Worker #else 81*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGV(...) do { } while (0) 82*bebae9c0SAndroid Build Coastguard Worker #endif 83*bebae9c0SAndroid Build Coastguard Worker 84*bebae9c0SAndroid Build Coastguard Worker #else // !defined(ANDROID) 85*bebae9c0SAndroid Build Coastguard Worker 86*bebae9c0SAndroid Build Coastguard Worker #if (USE_LOG <= SLAndroidLogLevel_Error) 87*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGE(...) do { fprintf(stderr, "SL_LOGE: %s:%s:%d ", __FILE__, __FUNCTION__, __LINE__); \ 88*bebae9c0SAndroid Build Coastguard Worker fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); } while(0) 89*bebae9c0SAndroid Build Coastguard Worker #else 90*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGE(...) do { } while (0) 91*bebae9c0SAndroid Build Coastguard Worker #endif 92*bebae9c0SAndroid Build Coastguard Worker 93*bebae9c0SAndroid Build Coastguard Worker #if (USE_LOG <= SLAndroidLogLevel_Warn) 94*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGW(...) do { fprintf(stderr, "SL_LOGW: %s:%s:%d ", __FILE__, __FUNCTION__, __LINE__); \ 95*bebae9c0SAndroid Build Coastguard Worker fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); } while(0) 96*bebae9c0SAndroid Build Coastguard Worker #else 97*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGW(...) do { } while (0) 98*bebae9c0SAndroid Build Coastguard Worker #endif 99*bebae9c0SAndroid Build Coastguard Worker 100*bebae9c0SAndroid Build Coastguard Worker #if (USE_LOG <= SLAndroidLogLevel_Info) 101*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGI(...) do { fprintf(stderr, "SL_LOGI: %s:%s:%d ", __FILE__, __FUNCTION__, __LINE__); \ 102*bebae9c0SAndroid Build Coastguard Worker fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); } while(0) 103*bebae9c0SAndroid Build Coastguard Worker #else 104*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGI(...) do { } while (0) 105*bebae9c0SAndroid Build Coastguard Worker #endif 106*bebae9c0SAndroid Build Coastguard Worker 107*bebae9c0SAndroid Build Coastguard Worker #if (USE_LOG <= SLAndroidLogLevel_Debug) 108*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGD(...) do { fprintf(stderr, "SL_LOGD: %s:%s:%d ", __FILE__, __FUNCTION__, __LINE__); \ 109*bebae9c0SAndroid Build Coastguard Worker fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); } while(0) 110*bebae9c0SAndroid Build Coastguard Worker #else 111*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGD(...) do { } while (0) 112*bebae9c0SAndroid Build Coastguard Worker #endif 113*bebae9c0SAndroid Build Coastguard Worker 114*bebae9c0SAndroid Build Coastguard Worker #if (USE_LOG <= SLAndroidLogLevel_Verbose) 115*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGV(...) do { fprintf(stderr, "SL_LOGV: %s:%s:%d ", __FILE__, __FUNCTION__, __LINE__); \ 116*bebae9c0SAndroid Build Coastguard Worker fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); } while(0) 117*bebae9c0SAndroid Build Coastguard Worker #else 118*bebae9c0SAndroid Build Coastguard Worker #define SL_LOGV(...) do { } while (0) 119*bebae9c0SAndroid Build Coastguard Worker #endif 120*bebae9c0SAndroid Build Coastguard Worker 121*bebae9c0SAndroid Build Coastguard Worker #endif // ANDROID 122