tensorflowlite LOG 打印

一个好的 开源项目,日志信息打印 是bi 不可少的 ...

tensorflowlite 中 的 log  貌似 用一个宏  来定义...

全局搜索 ...      TFLITE_LOG_PROD_ONCE

然后 发现,她   存在 于

 tensorflow/lite/minimal_logging.h

 

#define TFLITE_LOG_PROD(severity, format, ...) \
  tflite::logging_internal::MinimalLogger::Log(severity, format, ##__VA_ARGS__);

// Convenience macro for logging a statement *once* for a given process lifetime
// in production builds.
#define TFLITE_LOG_PROD_ONCE(severity, format, ...)    \
  do {                                                 \
    static const bool s_logged = [&] {                 \
      TFLITE_LOG_PROD(severity, format, ##__VA_ARGS__) \
      return true;                                     \
    }();                                               \
    (void)s_logged;                                    \
  } while (false);

以上是 源码部分  ....   版本为 r1.14,如有更改,请勿惊讶...

可以看出 TFLITE_LOG_PROD_ONCE  这个宏定义的意思.......实际上还是调用了这个

    TFLITE_LOG_PROD  宏定义...  

暂时先等等 ,等下再来 分析下面这句话的意思:

    tflite::logging_internal::MinimalLogger::Log(severity, format, ##__VA_ARGS__);

第一步,先看下

这个 log  函数,第一个参数,是打印等级 ...

参数是:

enum LogSeverity {
  TFLITE_LOG_INFO = 0,
  TFLITE_LOG_WARNING = 1,
  TFLITE_LOG_ERROR = 2,
};

根据你的编译选项,选择你需要的文件,自动编译,例如,你在./configure 文件配置的时候

假如 你的是android,那么log 信息文件编译,就在

minimal_logging_android.cc

该文件 一样是位于 tensorflow/lite/下...

在该实现文件内 部 ,可以看到包含了 android的头文件 ,大约在 18 lines

看具体代码:

void MinimalLogger::LogFormatted(LogSeverity severity, const char* format,
                                 va_list args) {
  // First log to Android's explicit log(cat) API.
  va_list args_for_android_log;
  va_copy(args_for_android_log, args);
  __android_log_vprint(GetPlatformSeverity(severity), "tflite", format, args);
  va_end(args_for_android_log);

  // Also print to stderr for standard console applications.
  fprintf(stderr, "%s: ", GetSeverityName(severity));
  vfprintf(stderr, format, args);
  fputc('\n', stderr);
}

}  // namespace logging_internal
}
int GetPlatformSeverity(LogSeverity severity) {
  switch (severity) {
    case TFLITE_LOG_INFO:
      return ANDROID_LOG_INFO;
    case TFLITE_LOG_WARNING:
      return ANDROID_LOG_WARN;
    case TFLITE_LOG_ERROR:
      return ANDROID_LOG_ERROR;
    default:
      return ANDROID_LOG_DEBUG;
  }
}

其他的, 类似...好像就是这样子了....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Teleger

你的支持是我前进的方向

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值