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