APP异常关闭,最后一条日志解析失败。异常关闭包括崩溃、强杀等
@Richard-Cao
我这里也发生了,应用切到后台日志有截断的现象,每次都会发生
app到后台的时候,flush一下
应用被强制杀死,或者其他情况进程被杀死的情况下,也会出现这种异常,请问现在有解决方案吗?
adb shell am force-stop xxx 模拟强制被杀 应用不走任何回调,无法flush,下次在打开应用flush就会出现丢失,100%复现
如果应用被异常杀死,会出导致最后一条日志缺少压缩结束符,导致后端解析时出现截断的现象。目前没有兼容这种情况
引用如上讨论:
- “模拟强制被杀,下次在打开应用flush就会出现丢失“(说明mmap cache回写还是不能弥补截断日志)
- “应用被异常杀死,导致最后一条日志缺少压缩结束符,导致后端解析时出现截断的现象”
请问崩溃算不算被异常杀死的一种,崩溃不会导致最后一条日志缺少压缩结束符而导致无法解压丢失吗?
崩溃是被异常杀死的一种,所有异常关闭都会导致最后一条日志缺少压缩结束符。
Originally posted by @jiangteng in https://github.com/Meituan-Dianping/Logan/issues/128#issuecomment-573988435
详情见:#128
#129
因为APP异常关闭,会导致日志文件缺少压缩结束符。所以最后一条日志解析不全。
目前建议:
- 重要日志,手动flush
- APP重大事件,如进入后台。手动flush
能不能通过 把LOGAN_MAX_GZIP_UTIL 设置小点或者为零,来解决问题
https://github.com/lixiao123/DeLogan 可以尝试在解密的时候做一下兼容,继续向后解密,跳过异常的区域
https://github.com/lixiao123/DeLogan 可以尝试在解密的时候做一下兼容,继续向后解密,跳过异常的区域
wrap.getInt()拿到的数过大,一跳就跳了一大段。 要是每次重启初始化新的文件夹,不接着上次的继续写应该丢的只是有问题的部分吧,然后自己写一个定期删除文件夹的方法