我想制作一个错误日志,以放入问题所在的文件和行。但是我找不到很好的引用。所有代码都使用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
任意长度!希望这可以帮助!