android,NDK, 将日志写入文件

标签 android logging 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)

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

最佳答案

如果这是为了调试目的,我使用这个宏:

#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)

它具有完全独立于 Android SDK/NDK 的优势,允许调试 native 代码而无需修改所有构建系统和包含以链接 logcat 函数。

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

关于android,NDK, 将日志写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14709773/

相关文章:

c# - 我可以从当前正在执行的函数中按程序获取参数名称/值吗?

c# - 如何优雅地记录每条消息的上下文信息

linux - 更改 docker 日志消息位置

Android - 如何导航 Activity 堆栈/任务

android:background 在 style.xml 中不起作用

java - 谷歌同意 SDK

android-studio - Android Studio lldb 和 GDB 之间切换

android - 为平台 2.1 构建 Android-openssl 库

android - 从通过 libjpeg 从 JPEG 文件解压缩的字节数组创建位图

java - 为什么我应该包含一个 gradle 依赖项作为 `@aar`