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_ */
  • 相关阅读:
    POJ-1700 Crossing River
    C++操作符new-动态存储空间分配
    POJ-3978-Primes
    POJ-1316-Self Numbers
    浅谈二维数组在传参中的使用
    OneToMany与ManyToOne的属性
    jquery的学习
    struts2常用标签
    Struts2.xml中result type属性说明
    监听器Listener
  • 原文地址:https://www.cnblogs.com/zhangyan-2015/p/5647626.html
Copyright © 2011-2022 走看看