Why does Android Studio's logcat not fully output logs?

问题: I use a loop to output the log, but not all of it is completely printed in logcat, and some missing log information is not displayed. How can I output all the information c...

问题:

I use a loop to output the log, but not all of it is completely printed in logcat, and some missing log information is not displayed. How can I output all the information completely?

for (int i=0;i<(mSpaceCount + mPulseCount);i++)
{
    Log.i("flag", "~~~~m_bitDateF[i] : "+m_bitDateF[i]+" i :"+i);
}

Output is as follows:

............

12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :434
12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :435
12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :436
12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :437
12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :438
12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :439
12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : 3.5 i :440
12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : 3.5 i :441
12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : 3.5 i :442
12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : 3.5 i :443
12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : 3.5 i :444
12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : 3.5 i :445
12-28 18:43:24.215 20116 20503 I flag    : ~~~~m_bitDateF[i] : 3.5 i :446
12-28 18:43:24.216 20116 20503 I flag    : ~~~~m_bitDateF[i] : 3.5 i :447
12-28 18:43:24.216 20116 20503 I flag    : ~~~~m_bitDateF[i] : 3.5 i :448
12-28 18:43:24.216 20116 20503 I flag    : ~~~~m_bitDateF[i] : 3.5 i :449
12-28 18:43:24.219 20116 20503 I flag    : ~~~~m_bitDateF[i] : 3.5 i :601
12-28 18:43:24.219 20116 20503 I flag    : ~~~~m_bitDateF[i] : 3.5 i :604
12-28 18:43:24.222 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :749
12-28 18:43:24.222 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :756
12-28 18:43:24.222 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :757
12-28 18:43:24.222 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :758
12-28 18:43:24.222 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :759
12-28 18:43:24.222 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :760
12-28 18:43:24.222 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :761
12-28 18:43:24.222 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :762
12-28 18:43:24.222 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :763
12-28 18:43:24.222 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :764
12-28 18:43:24.222 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :765
12-28 18:43:24.224 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :837
12-28 18:43:24.224 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :838
12-28 18:43:24.224 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :839
12-28 18:43:24.224 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :840
12-28 18:43:24.224 20116 20503 I flag    : ~~~~m_bitDateF[i] : -3.5 i :841

............

You can see that the output was skipped after 449 to 601 and 604 to 749, but the loop should be executed, but there is no output. I don't know why there is not all output, and the problem is random and sometimes it will output normally. How can I make logcat complete output log?


回答1:

While looking at your Logcat, you should look at the timestamp on the left-hand side. 18:43:24.215 for example. the .215 is the milliseconds. And if you look at the output ending in the same millisecond, you can see that you're outputting about 20 lines of output per millisecond.

Now, looking at your output where you're skipping numbers, look at the milliseconds.

18:43:24.215 : i :446
18:43:24.216 : i :447
18:43:24.216 : i :448
18:43:24.216 : i :449
// it's skipping here //
18:43:24.219 : i :601
18:43:24.219 : i :604

It skipped about 3 milliseconds.

So, what's happening is you are logging out everything, it's just overloading LogCat with too much to print out.

If you do really want to log out all this information, you need to change how you're logging.

For example, you could create a String, append each loop, and then log the full output when it's done. Note, you could use a StringBuilder for even better results.

// Create a String to hold all the log information.
String log = "";

for (int i=0 ;i < (mSpaceCount + mPulseCount); i++) {
    // Append the log information to our String. 
    // Add a "n" to add a new line at the end of each line.
    log += "~~~~m_bitDateF[i] : " + m_bitDateF[i] + " i :" + i + "n";
}

// Finally, log the output.
Log.i("flag", log);
  • 发表于 2018-12-31 21:44
  • 阅读 ( 201 )
  • 分类:网络文章

条评论

请先 登录 后评论
不写代码的码农
小编

篇文章

作家榜 »

  1. 小编 文章
返回顶部
部分文章转自于网络,若有侵权请联系我们删除