android,NDK,将日志写入文件

Mic*_*Tin 2 logging android android-ndk

我的代码(.c)中有这些行:

#define LOGI(x...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG,x)
#define LOGE(x...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG,x)
Run Code Online (Sandbox Code Playgroud)

我使用它们在LogCat中输出,如何修改这些行以将消息写入文件,或者如何在我的代码中从LogCat获取某些消息?提前致谢.

mbr*_*non 8

如果这是出于调试目的,我使用这个宏:

#define WRITE_LOG(s, ...) do { \
FILE *f = fopen("/data/local/tmp/log.txt", "a+"); \
  fprintf(f, s, __VA_ARGS__); \
  fflush(f); \
  fclose(f); \
} while (0)
Run Code Online (Sandbox Code Playgroud)

它的优势在于完全独立于Android SDK/NDK,它允许调试本机代码而无需修改所有构建系统,并且包含以便链接logcat函数.

但是一个小小的警告:我已经习惯了touch /data/local/tmp/log.txt在启动程序之前使用adb-shell 创建文件,因为在大多数情况下系统会阻止您创建新文件.顺便说一句,location/data/local/tmp /具有即使没有root权限也可以访问的优点.