我想制作一个错误日志,以放入问题所在的文件和行。但是我找不到很好的引用。所有代码都使用JNI,C++端。

此尝试失败:

#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR  , LOG_TAG,"%s %s %s",__VA_ARGS__, __FILE__, __LINE__)

这个只显示消息,没有文件和行
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR  , LOG_TAG,__VA_ARGS__, __FILE__, __LINE__)

我如何清楚地打印所有信息?
是否可以仅打印__VA_ARGS__中的某些参数,例如__VA_NARG__
有关此类事情的其他信息或有用的引用资料?

最佳答案

非常有趣和有用的问题!我找到了这个解决方案,它可能不是最简单的,但对我有用:

#define LOGE(x...) do { \
  char buf[512]; \
  sprintf(buf, x); \
  __android_log_print(ANDROID_LOG_ERROR,"TAG", "%s | %s:%i", buf, __FILE__, __LINE__); \
} while (0)

这行:
LOGE("Test: %i", 42)

记录以下内容:
TAG    Test: 42 | path/to/file.cpp:line

如果要记录更长的内容,请注意缓冲区的512任意长度!

希望这可以帮助!

10-06 05:22