164 lines
5.1 KiB
C
Executable File
164 lines
5.1 KiB
C
Executable File
/* --------------------------------------------------------------------------------------------------------
|
|
* Copyright(C), 2009-2010, Fuzhou Rockchip Co., Ltd. All Rights Reserved.
|
|
*
|
|
* File: custom_log.h
|
|
*
|
|
* Desc: ChenZhen 偏好的, 对 Android log 机构的定制配置.
|
|
*
|
|
* -----------------------------------------------------------------------------------
|
|
* < 习语 和 缩略语 > :
|
|
*
|
|
* -----------------------------------------------------------------------------------
|
|
*
|
|
* Usage: 调用本 log 机构的 .c or .h 文件, 若要使能这里的 log 机制,
|
|
* 则必须在 inclue 本文件之前, "#define ENABLE_DEBUG_LOG" 先.
|
|
*
|
|
* 同 log.h 一样, client 文件在 inclue 本文件之前, "最好" #define LOG_TAG <module_tag>
|
|
*
|
|
* Note:
|
|
*
|
|
* Author: ChenZhen
|
|
*
|
|
* --------------------------------------------------------------------------------------------------------
|
|
* Version:
|
|
* v1.0
|
|
* --------------------------------------------------------------------------------------------------------
|
|
* Log:
|
|
----Tue Mar 02 21:30:33 2010 v.10
|
|
*
|
|
* --------------------------------------------------------------------------------------------------------
|
|
*/
|
|
|
|
|
|
#ifndef __CUSTOM_LOG_H__
|
|
#define __CUSTOM_LOG_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* ---------------------------------------------------------------------------------------------------------
|
|
* Include Files
|
|
* ---------------------------------------------------------------------------------------------------------
|
|
*/
|
|
#include <cutils/log.h>
|
|
|
|
/* ---------------------------------------------------------------------------------------------------------
|
|
* Macros Definition
|
|
* ---------------------------------------------------------------------------------------------------------
|
|
*/
|
|
|
|
/** 若下列 macro 有被定义, 才 使能 log 输出 : 参见 "Usage". */
|
|
// #define ENABLE_DEBUG_LOG
|
|
|
|
/** 是否 log 源文件 路径信息. */
|
|
#define LOG_FILE_PATH
|
|
|
|
/*-----------------------------------*/
|
|
|
|
#if PLATFORM_SDK_VERSION >= 16
|
|
#define LOGV(fmt,args...) ALOGV(fmt,##args)
|
|
#define LOGD(fmt,args...) ALOGD(fmt,##args)
|
|
#define LOGI(fmt,args...) ALOGI(fmt,##args)
|
|
#define LOGW(fmt,args...) ALOGW(fmt,##args)
|
|
#define LOGE(fmt,args...) ALOGE(fmt,##args)
|
|
#define LOGE_IF(cond,fmt,args...) ALOGE_IF(cond,fmt,##args)
|
|
#endif
|
|
|
|
#ifdef ENABLE_DEBUG_LOG
|
|
|
|
#ifdef LOG_FILE_PATH
|
|
#define D(fmt, args...) \
|
|
{ LOGD("[File] : %s; [Line] : %d; [Func] : %s() ; " fmt, __FILE__, __LINE__, __FUNCTION__, ## args); }
|
|
#else
|
|
#define D(fmt, args...) \
|
|
{ LOGD("[Line] : %d; [Func] : %s() ; " fmt, __LINE__, __FUNCTION__, ## args); }
|
|
#endif
|
|
|
|
#else
|
|
#define D(...) ((void)0)
|
|
#endif
|
|
|
|
|
|
/*-----------------------------------*/
|
|
|
|
#ifdef ENABLE_DEBUG_LOG
|
|
|
|
#ifdef LOG_FILE_PATH
|
|
#define I(fmt, args...) \
|
|
{ LOGI("[File] : %s; [Line] : %d; [Func] : %s() ; ! Info : " fmt, __FILE__, __LINE__, __FUNCTION__, ## args); }
|
|
#else
|
|
#define I(fmt, args...) \
|
|
{ LOGI("[Line] : %d; [Func] : %s() ; ! Info : " fmt, __LINE__, __FUNCTION__, ## args); }
|
|
#endif
|
|
#else
|
|
#define I(...) ((void)0)
|
|
#endif
|
|
|
|
/*-----------------------------------*/
|
|
#ifdef ENABLE_DEBUG_LOG
|
|
#ifdef LOG_FILE_PATH
|
|
#define W(fmt, args...) \
|
|
{ LOGW("[File] : %s; [Line] : %d; [Func] : %s() ; !! Warning : " fmt, __FILE__, __LINE__, __FUNCTION__, ## args); }
|
|
#else
|
|
#define W(fmt, args...) \
|
|
{ LOGW("[Line] : %d; [Func] : %s() ; !! Warning : " fmt, __LINE__, __FUNCTION__, ## args); }
|
|
#endif
|
|
#else
|
|
#define W(...) ((void)0)
|
|
#endif
|
|
|
|
/*-----------------------------------*/
|
|
#ifdef ENABLE_DEBUG_LOG
|
|
#ifdef LOG_FILE_PATH
|
|
#define E(fmt, args...) \
|
|
{ LOGE("[File] : %s; [Line] : %d; [Func] : %s() ; !!! Error : " fmt, __FILE__, __LINE__, __FUNCTION__, ## args); }
|
|
#else
|
|
#define E(fmt, args...) \
|
|
{ LOGE("[Line] : %d; [Func] : %s() ; !!! Error : " fmt, __LINE__, __FUNCTION__, ## args); }
|
|
#endif
|
|
#else
|
|
#define E(...) ((void)0)
|
|
#endif
|
|
|
|
/*-----------------------------------*/
|
|
/**
|
|
* 若程序重复运行到当前位置的次数等于 threshold 或者第一次到达, 则打印指定的 log 信息.
|
|
*/
|
|
#ifdef ENABLE_DEBUG_LOG
|
|
#define D_WHEN_REPEAT(threshold, fmt, args...) \
|
|
do { \
|
|
static int count = 0; \
|
|
if ( 0 == count || (count++) == threshold ) { \
|
|
D(fmt, ##args); \
|
|
count = 1; \
|
|
} \
|
|
} while (0)
|
|
#else
|
|
#define D_WHEN_REPEAT(...) ((void)0)
|
|
#endif
|
|
|
|
/* ---------------------------------------------------------------------------------------------------------
|
|
* Types and Structures Definition
|
|
* ---------------------------------------------------------------------------------------------------------
|
|
*/
|
|
|
|
|
|
/* ---------------------------------------------------------------------------------------------------------
|
|
* Global Functions' Prototype
|
|
* ---------------------------------------------------------------------------------------------------------
|
|
*/
|
|
|
|
|
|
/* ---------------------------------------------------------------------------------------------------------
|
|
* Inline Functions Implementation
|
|
* ---------------------------------------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __CUSTOM_LOG_H__ */
|
|
|