jni开发通过搜集在C++中的log输出日志生成可读的.log文件到手机sd中

    xiaoxiao2022-06-23  21

    看到标题,有人会问了。输出log在控制台也可以啊也能看到啊等等这一系列问题,这里我想说的是,那样确实方便查看调试,但想过应用上架后为了统计一些cash日志你怎么办?所以,我们以log文件的方式生成在sd卡,下面代码主要是C++中的,至于生成好了的log文件在java中怎么上传服务器这应该很简单,这步骤就跳过。

    首先在头文件中声明:

    void Log(LPCTSTR pszFormat, ...); void LogV(LPCTSTR pszFormat, va_list args); 然后再实现文件cpp中写方法实现:

    // 日志函数 void Log(LPCTSTR pszFormat, ...) { va_list args; va_start(args, pszFormat); LogV(pszFormat, args); va_end(args); } // 日志函数 void LogV(LPCTSTR pszFormat, va_list args) { // 日志关闭则不做处理 // if (!m_bLogEnabled) return; // 格式化日志 char szContent[32*1024] = { 0 }; vsnprintf(szContent, ASIZE(szContent), pszFormat, args); // 输出内容 char szFile[MAX_PATH * 2] = { "存放的路径"}; strcat(szFile,"log名称.log"); FILE* fpFile = fopen(szFile, "ab"); if (fpFile != NULL) { string strContent =szContent; fwrite(strContent.c_str(), strContent.length(), 1, fpFile); fclose(fpFile); } } 最后调用:

    Log("%s \r\n","我是C底层输出的log日志"); 然后打开手机sd卡找到你创建的log名称就可以了。这是博主测试的看下图:

    升级改造版本代码如下:

    static bool g_bLogEnabled=false; // 日志函数 void Log(LPCSTR pszFormat, ...) { va_list args; va_start(args, pszFormat); LogV(pszFormat, args); va_end(args); } // 日志函数 void LogV(LPCSTR pszFormat, va_list args) { // 日志关闭则不做处理 if (!g_bLogEnabled) return; // 格式化日志 string strLogDir=FileUtils::sharedFileUtils()->getWritablePath(); char szContent[32*1024] = { 0 }; vsnprintf(szContent, sizeof(szContent)/sizeof(szContent[0]), pszFormat, args); // 输出内容 char szFile[260 * 2] = { 0 }; strcat(szFile,strLogDir.c_str()); strcat(szFile,"henry.log"); FILE* fpFile = fopen(szFile, "ab"); if (fpFile != NULL) { fwrite(szContent, strlen(szContent), 1, fpFile); fclose(fpFile); } #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) __android_log_print(ANDROID_LOG_DEBUG,"main",szContent); #else printf("%s",szContent); #endif // __android_log_print(ANDROID_LOG_DEBUG,"main",strLogDir.c_str()); }

    #if defined(NDK_BUILD) #define LOG Log #else #define LOG #endif

    这个有个问题就是这句获取地址的代码string strLogDir=FileUtils::sharedFileUtils()->getWritablePath();最后在手机中找不到.log的文件。Android里的读写权限都加了也搜索不到。但网上说要root权限。这个我就没测试。毕竟公司的手机。呵呵。大家如果知道原因可以回复艾特我。
    转载请注明原文地址: https://ju.6miu.com/read-1123273.html

    最新回复(0)