/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Logging
// In order of decreasing priority, the log priority levels are:
// Assert
// E(rror)
// W(arn)
// I(nfo)
// D(ebug)
// V(erbose)
// Debug and verbose are usually compiled out except during development.
/** These values match the definitions in system/core/include/cutils/log.h */
#define SLAndroidLogLevel_Unknown 0
#define SLAndroidLogLevel_Default 1
#define SLAndroidLogLevel_Verbose 2
#define SLAndroidLogLevel_Debug 3
#define SLAndroidLogLevel_Info 4
#define SLAndroidLogLevel_Warn 5
#define SLAndroidLogLevel_Error 6
#define SLAndroidLogLevel_Fatal 7
#define SLAndroidLogLevel_Silent 8
// USE_LOG is the minimum log priority level that is enabled at build time.
// It is configured in Android.mk but can be overridden per source file.
#ifndef USE_LOG
#define USE_LOG SLAndroidLogLevel_Info
#endif
#ifdef ANDROID
// The usual Android LOGx macros are not available, so we use the lower-level APIs.
extern const char slLogTag[];
// can't disable SL_LOGF
#define SL_LOGF(...) __android_log_print(SLAndroidLogLevel_Fatal, slLogTag, __VA_ARGS__)
#if (USE_LOG <= SLAndroidLogLevel_Error)
#define SL_LOGE(...) __android_log_print(SLAndroidLogLevel_Error, slLogTag, __VA_ARGS__)
#else
#define SL_LOGE(...) do { } while (0)
#endif
#if (USE_LOG <= SLAndroidLogLevel_Warn)
#define SL_LOGW(...) __android_log_print(SLAndroidLogLevel_Warn, slLogTag, __VA_ARGS__)
#else
#define SL_LOGW(...) do { } while (0)
#endif
#if (USE_LOG <= SLAndroidLogLevel_Info)
#define SL_LOGI(...) __android_log_print(SLAndroidLogLevel_Info, slLogTag, __VA_ARGS__)
#else
#define SL_LOGI(...) do { } while (0)
#endif
#if (USE_LOG <= SLAndroidLogLevel_Debug)
#define SL_LOGD(...) __android_log_print(SLAndroidLogLevel_Debug, slLogTag, __VA_ARGS__)
#else
#define SL_LOGD(...) do { } while (0)
#endif
#if (USE_LOG <= SLAndroidLogLevel_Verbose)
#define SL_LOGV(...) __android_log_print(SLAndroidLogLevel_Verbose, slLogTag, __VA_ARGS__)
#else
#define SL_LOGV(...) do { } while (0)
#endif
#else // !defined(ANDROID)
#if (USE_LOG <= SLAndroidLogLevel_Error)
#define SL_LOGE(...) do { fprintf(stderr, "SL_LOGE: %s:%s:%d ", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); } while(0)
#else
#define SL_LOGE(...) do { } while (0)
#endif
#if (USE_LOG <= SLAndroidLogLevel_Warn)
#define SL_LOGW(...) do { fprintf(stderr, "SL_LOGW: %s:%s:%d ", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); } while(0)
#else
#define SL_LOGW(...) do { } while (0)
#endif
#if (USE_LOG <= SLAndroidLogLevel_Info)
#define SL_LOGI(...) do { fprintf(stderr, "SL_LOGI: %s:%s:%d ", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); } while(0)
#else
#define SL_LOGI(...) do { } while (0)
#endif
#if (USE_LOG <= SLAndroidLogLevel_Debug)
#define SL_LOGD(...) do { fprintf(stderr, "SL_LOGD: %s:%s:%d ", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); } while(0)
#else
#define SL_LOGD(...) do { } while (0)
#endif
#if (USE_LOG <= SLAndroidLogLevel_Verbose)
#define SL_LOGV(...) do { fprintf(stderr, "SL_LOGV: %s:%s:%d ", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); } while(0)
#else
#define SL_LOGV(...) do { } while (0)
#endif
#endif // ANDROID