Closed Geekholt closed 10 months ago
setMaxDiskSize这个方法的初衷是为了解决日志文件体积过大,占用手机磁盘空间的问题。mxlogger 不会在日志写入的时候 实时检查是否超过最大值。默认情况下,程序在进入后台的时候会检查日志目录下所有的日志文件是否超过了设定的最大值,如果超过了则会优先删除距离现在时间较远的日志文件。如果你当前只有一个日志文件,那么这个文件会被删除。根据你的需求 我建议你这样做。 1、设置日志存储模式为 yyyy_MM_dd。即 每天存储一个日志文件,事实上存储粒度越细越好,最小的粒度是yyyy_MM_dd_HH。 2、设置shouldRemoveExpiredDataWhenEnterBackground 为false,也就是自己处理过期文件应该如何删除。 3、在某一个时刻,可以是启动的时候,或者根据你们的业务情况 调用 mxlogger.logSize 方法 检查是否超过了最大值。 4、如果达到了最大值,通过mxlogger.diskcachePath 获取日志磁盘路径,将该路径下的日志文件打包上传到自己的服务器 5、调用removeBeforeAllData 方法删除文件。注意不是removeAll()方法。因为当前正在写入的日志文件 不能被删除,否则日志会丢失。
感谢回复,我之前就是按照你说的这个方法做的,自己维护maxSize,但是由于调用了removeAll()导致日志丢失,所以才来提问的。 如果当前只有一个文件,调用removeBeforeAllData的话,好像也没啥意义,上传完成后文件依然存在。 目前我已经放弃设置maxSize的方案了,改用yyyy_MM_dd_HH。 最后还是非常感谢你在工作之余还能进行回复!
setMaxDiskSize后,单个文件依然可以超过指定大小。我想实现单个文件超过10mb自动上传的功能,请问要怎么做?