Logan icon indicating copy to clipboard operation
Logan copied to clipboard

APP异常关闭,最后一条日志解析失败。异常关闭包括崩溃、强杀等

Open JackyAndroid opened this issue 6 years ago • 6 comments

@Richard-Cao

我这里也发生了,应用切到后台日志有截断的现象,每次都会发生

app到后台的时候,flush一下

应用被强制杀死,或者其他情况进程被杀死的情况下,也会出现这种异常,请问现在有解决方案吗?

adb shell am force-stop xxx 模拟强制被杀 应用不走任何回调,无法flush,下次在打开应用flush就会出现丢失,100%复现

如果应用被异常杀死,会出导致最后一条日志缺少压缩结束符,导致后端解析时出现截断的现象。目前没有兼容这种情况

引用如上讨论:

  1. “模拟强制被杀,下次在打开应用flush就会出现丢失“(说明mmap cache回写还是不能弥补截断日志)
  2. “应用被异常杀死,导致最后一条日志缺少压缩结束符,导致后端解析时出现截断的现象”

请问崩溃算不算被异常杀死的一种,崩溃不会导致最后一条日志缺少压缩结束符而导致无法解压丢失吗?

崩溃是被异常杀死的一种,所有异常关闭都会导致最后一条日志缺少压缩结束符。

Originally posted by @jiangteng in https://github.com/Meituan-Dianping/Logan/issues/128#issuecomment-573988435

JackyAndroid avatar Jan 14 '20 06:01 JackyAndroid

详情见:#128

JackyAndroid avatar Jan 14 '20 06:01 JackyAndroid

#129

JackyAndroid avatar Jan 14 '20 07:01 JackyAndroid

因为APP异常关闭,会导致日志文件缺少压缩结束符。所以最后一条日志解析不全。

目前建议:

  • 重要日志,手动flush
  • APP重大事件,如进入后台。手动flush

jiangteng avatar Jan 14 '20 07:01 jiangteng

能不能通过 把LOGAN_MAX_GZIP_UTIL 设置小点或者为零,来解决问题

leonsimple avatar Aug 05 '20 06:08 leonsimple

https://github.com/lixiao123/DeLogan 可以尝试在解密的时候做一下兼容,继续向后解密,跳过异常的区域

0xforee avatar Aug 11 '20 06:08 0xforee

https://github.com/lixiao123/DeLogan 可以尝试在解密的时候做一下兼容,继续向后解密,跳过异常的区域

wrap.getInt()拿到的数过大,一跳就跳了一大段。 要是每次重启初始化新的文件夹,不接着上次的继续写应该丢的只是有问题的部分吧,然后自己写一个定期删除文件夹的方法

CGreen11 avatar May 26 '22 06:05 CGreen11