android,NDK, write logs to a file

来源:互联网 发布:商品标签制作软件 编辑:程序博客网 时间:2024/05/19 18:46

android,NDK, write logs to a file


I have this lines in my code (.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)

I use them for outputing in LogCat, how to modify these lines to write messages to a file, or how can I get certain messages from LogCat in my code ? 



If this is for debugging purpose, I use this macro:

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

It has the advantage of being totally independent from the Android SDK/NDK, which allows to debug native code without having to modify all your build system and includes in order to link on the logcat functions.

A small warning though: I've taken the habit of creating the file using touch /data/local/tmp/log.txtin adb-shell before launching the program, as in most cases the system prevents you from creating new files. And by the way, the location /data/local/tmp/ has the advantage of being accessible even without root privileges.





If you are under an application, you can use /data/data//

so dry lab:

FILE f = fopen("/data/data/<application name>/<file name>", 'w');fprintf(f, "my message\n");fclose(f);

should work.


0down vote

If you are under an application, you can use /data/data//

so dry lab:

FILE f = fopen("/data/data/<application name>/<file name>", 'w');fprintf(f, "my message\n");fclose(f);

should work.

0 0