zoukankan      html  css  js  c++  java
  • android ndk开发之Log日志(一)

    //直接上代码:文件名my_log.h

    /*
    
     * my_log.h
    
     *
    
     *  Created on: 2016-7-6
    
     *      Author: zhangyan
    
     */
    
     
    
    #ifndef MY_LOG_H_
    
    #define MY_LOG_H_
    
    #include <android/log.h>
    
    #define MY_LOG_LEVEL_VERBOSE 1
    
    #define MY_LOG_LEVEL_DEBUG 2
    
    #define MY_LOG_LEVEL_INFO 3
    
    #define MY_LOG_LEVEL_WARNING 4
    
    #define MY_LOG_LEVEL_ERROR 5
    
    #define MY_LOG_LEVEL_FATAL 6
    
    #define MY_LOG_LEVEL_SILENT 7
    
    #ifndef MY_LOG_TAG
    
    #    define MY_LOG_TAG __FILE__
    
    #endif
    
    #ifndef MY_LOG_LEVEL
    
    #    define MY_LOG_LEVEL MY_LOG_LEVEL_VERBOSE
    
    #endif
    
    #define MY_LOG_NOOP (void) 0
    
    #define MY_LOG_PRINT(level,fmt,...) 
    
            __android_log_print(level, MY_LOG_TAG, "(%s:%u) %s: " fmt, 
    
                    __FILE__, __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__)
    
    #if MY_LOG_LEVEL_VERBOSE >= MY_LOG_LEVEL
    
    #    define MY_LOG_VERBOSE(fmt,...) 
    
            MY_LOG_PRINT(ANDROID_LOG_VERBOSE, fmt, ##__VA_ARGS__)
    
    #else
    
    #    define MY_LOG_VERBOSE(...) MY_LOG_NOOP
    
    #endif
    
     
    
    #if MY_LOG_LEVEL_DEBUG >= MY_LOG_LEVEL
    
    #    define MY_LOG_DEBUG(fmt,...) 
    
    MY_LOG_PRINT(ANDROID_LOG_DEBUG,fmt, ##__VA_ARGS__)
    
     #else
    
    #    define MY_LOG_DEBUG(...) MY_LOG_NOOP
    
    #endif
    
     
    
    #if MY_LOG_LEVEL_INFO >= MY_LOG_LEVEL
    
    #    define MY_LOG_INFO(fmt,...) 
    
            MY_LOG_PRINT(ANDROID_LOG_INFO, fmt, ##__VA_ARGS__)
    
    #else
    
    #    define MY_LOG_INFO(...) MY_LOG_NOOP
    
    #endif
    
     
    
    #if MY_LOG_LEVEL_WARNING >= MY_LOG_LEVEL
    
    #    define MY_LOG_WARNING(fmt,...)  
    
            MY_LOG_PRINT(ANDROID_LOG_WARN, fmt, ##__VA_ARGS__)
    
    //        MY_LOG_PRINT(ANDROID_LOG_ERROR, fmt, ##__VA_ARGS__)
    
    #    define MY_LOG_FATAL(fmt,...) 
    
            MY_LOG_PRINT(ANDROID_LOG_FATAL, fmt, ##__VA_ARGS__)
    
    #else
    
    #    define MY_LOG_FATAL(...) MY_LOG_NOOP
    
    #endif
    
     
    
    #if MY_LOG_LEVEL_FATAL >= MY_LOG_LEVEL
    
    #    define MY_LOG_ASSERT(expression, fmt, ...) 
    
    if (!(expression)) { 
    
                __android_log_assert(#expression, MY_LOG_TAG, 
    
                    fmt, ##__VA_ARGS__); 
    
    }
    
    #else
    
    #    define MY_LOG_ASSERT(...) MY_LOG_NOOP
    
    #endif
    
     
    
    /*
    
     宏替换不是很了解的话可以用gcc -E 命令测试
    
      这里##如果可变参数长度为0, 会去掉前面的,
    
      这里的#会把后面的参数当成字符串
    
      例:
    
            #define E(expression) a(#expression)
    
     
    
            E(1>2) -> a("1>2)
    
            E("1>2") ->a("1>2")
    
    */
    
     
    
    #endif /* MY_LOG_H_ */
  • 相关阅读:
    css 定位
    css inline忽略宽和高
    css clear属性
    关系型数据库与nosql
    链接标签<a>的css定义规则
    1em=16px
    text-align的justify属性
    2393Cirno的完美算数教室 容斥
    bzoj4665小w的喜糖 dp+容斥
    bzoj4558[JLoi2016]方 容斥+count
  • 原文地址:https://www.cnblogs.com/zhangyan-2015/p/5647626.html
Copyright © 2011-2022 走看看