logging.h revision 30ab3fc173709a491c9e2e103f53fb7c0d1b96b7
130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni/* 230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * Copyright (C) 2011 The Android Open Source Project 330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * 430ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * Licensed under the Apache License, Version 2.0 (the "License"); 530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * you may not use this file except in compliance with the License. 630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * You may obtain a copy of the License at 730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * 830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * http://www.apache.org/licenses/LICENSE-2.0 930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * 1030ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * Unless required by applicable law or agreed to in writing, software 1130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * distributed under the License is distributed on an "AS IS" BASIS, 1230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * See the License for the specific language governing permissions and 1430ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * limitations under the License. 1530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni */ 1630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni 1730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#ifndef BASE_LOGGING_H_ 1830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#define BASE_LOGGING_H_ 1930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni 2030ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#include <assert.h> 2130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni 2230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#include <android/log.h> 2330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni 2430ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#define LOG_TAG "MCA" 2530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#define LOG_EVERY_FRAME false 2630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni 2730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceronienum LogFormat { 2830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni LogFormat_Long, 2930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni LogFormat_Short 3030ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni}; 3130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni 3230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni// LOGE and LOGI are shortcuts to writing out to the Android info and error 3330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni// logs. Example usage: LOGE("Critical Error: %d is zero.", x); 3430ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__) 3530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__) 3630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#define LOGW(...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__) 3730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__) 3830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni 3930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#define LOG_FRAME(...) if (LOG_EVERY_FRAME) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__) 4030ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni 4130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni// ASSERT provides a short-cut to the Android log assert (on the error log). 4230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni// Example usage: ASSERT(1 != 0, "This is bad."); 4330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#ifndef ASSERT 4430ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#define ASSERT(CONDITION) assert(CONDITION) 4530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#endif 4630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni 4730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#ifndef LOG_ASSERT 4830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#define LOG_ASSERT(CONDITION, ...) \ 4930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni if (!CONDITION) {\ 5030ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni __android_log_assert( #CONDITION,\ 5130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni LOG_TAG,\ 5230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni __VA_ARGS__); \ 5330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni assert(false); \ 5430ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni } 5530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#endif 5630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni 5730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni#endif // BASE_LOGGING_H_ 58